Linux のディレクトリにパーミッションを適用する場合、パーミッション ビットは通常のファイルとは異なる意味を持ちます。
- 読み取りビット (
r
) 影響を受けるユーザーがディレクトリ内のファイルを一覧表示できるようにする - 書き込みビット (
w
) 影響を受けたユーザーが、ディレクトリ内のファイルを作成、名前変更、または削除し、ディレクトリの属性を変更することを許可します - 実行ビット (
x
) 影響を受けるユーザーがディレクトリに入り、内部のファイルとディレクトリにアクセスできるようにする - スティッキー ビット (
T
、またはt
他のユーザーに実行ビットが設定されている場合) は、そのディレクトリ内のファイルとディレクトリは、その所有者 (またはルート) のみが削除または名前変更できることを示しています
まず、次のことを考えてみてください。ディレクトリとは何ですか?これは、その中に存在するアイテム (ファイルやその他のディレクトリ) の単なるリストです。つまり:ディレクトリ =名前のリスト。
読み取りビット =設定されている場合、このリストを読み取ることができます。たとえば、poems
という名前のディレクトリがあるとします。 :
- できます
ls poems
(-l
内に存在するアイテムのリストを取得します) 詳細は明らかにしません!) - コマンドライン補完、つまり
touch poems/so <TAB> poems/somefile
を使用できます . poems
は作成できません 作業ディレクトリ (例:cd
書き込みビット =設定されている場合、このリストを変更できます。つまり、名前を{追加、名前変更、削除}できます。しかし!実行ビットも設定されている場合にのみ、実際に実行できます。
実行ビット =このディレクトリを作業ディレクトリにします。例:cd
それに。次の場合に、この権限が必要です:
- 内部に存在するアイテムにアクセス (読み取り、書き込み、実行) します。
- リスト自体を変更します。つまり、名前を追加、名前変更、削除します (もちろん、ディレクトリに書き込みビットを設定する必要があります)。
興味深いケース 1 :ディレクトリに対する書き込み権限と実行権限がある場合は、それらの項目に対する書き込み権限がなくても、その中にある項目を {delete,rename} できます。 (スティッキー ビットを使用してこれを防ぎます)
興味深いケース 2 :ディレクトリに対する実行 (ただし、書き込みは許可されていません) パーミッションがあり、その中にあるファイルに対する書き込みパーミッションがある場合、そのファイルを削除することはできません (リストから削除する必要があるため)。ただし、その内容を消去することはできます。テキスト ファイルの場合は、vi を使用して開き、すべてを削除できます。ファイルはまだ存在しますが、空になります。
まとめ:
読み取りビット =リストの名前を読むことができます。
書き込みビット =実行ビットも設定されている場合、リストに名前を {追加、名前変更、削除} できます。
実行ビット =このディレクトリを作業ディレクトリにすることができます。
PS:クサラナンダが言及した記事はよく読んでいます。
考えられるすべての権限とその実際の効果をこの表にまとめました。
(*) ファイル名のみ :サイズや日付などの他の属性にはアクセスできません。例えば。オートコンプリートには Tab キーを使用できますが、ls コマンドは使用できません。
感想 :
- X 未設定あり 、R と W はほとんど役に立ちません。
- X RW を無効にする ファイルの内容をやみくもに読み書きし、サブディレクトリにアクセスできるため、誤った安心感を与えます。ディレクトリのすべての直接の子に明示的な権限があることを確認する必要があります。
- 以下以外の値を使用することはめったにありません:
- 0 :アクセス不可
- 1 :横断を許可する最小限のアクセス。
- 5 :読み取り/書き込みを許可しますが、ディレクトリ ツリー自体の構造を変更することはできません。
- 7 :フルアクセス