+x権限を持つディレクトリには親ディレクトリはありません。いつ役に立ちますか?

+x権限を持つディレクトリには親ディレクトリはありません。いつ役に立ちますか?

folder次のパスというフォルダがあるとします。

my_path = /a/b/c/d/e/folder

fileそしてそのフォルダから呼び出されるファイル。

次に、/a/からグループ権限を削除するためにこのコマンドを実行するとします。

> chmod g-rwx -R /a/

それでは、+rx次の権限を付与するとしましょうfolder

> chmod g+rx /a/b/c/d/e/folder

その後、私のグループの2番目のユーザーが実行されている場合:

> ls /a/b/c/d/e/folder

または

> cat /a/b/c/d/e/folder/file 

g+x彼女に権限エラーが発生します。これは、すべての親にアクセス権限を提供する必要があるためですfolder。だから私の質問は、いつまたはなぜ+x親ディレクトリに権限を付与すると便利ですか?いいえそれを持って?

ありがとう

答え1

ディレクトリ内のファイルをCDまたはアクセスするには、すべての親ディレクトリに+x権限が必要です。

ファイルを一覧表示するには、ディレクトリに+ r権限が必要です。例は次のとおりです。

次のコマンドを実行していくつかの設定を構成できます。

mkdir -p /a/b

touch /a/b/{file1,file2}

cd /a

echo 1 > b/file1

echo 2 > b/file2

電源なし:

pwd
/a$ pwd
/a
/a$ chmod -rwx b
/a$ ls -l
d---------  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
ls: : Permission denied
/a$ cat b/file1
cat: b/file1: Permission denied

実行のみ

/a$ chmod +x b
/a$ ls -l
total 0
d--x--x--x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: b: Permission denied
/a$ cat b/file1
a
/a$ ls -l b/file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 b/file1

今読んでください:

/a$ chmod +r b/
/a$ ls -l
/a$ ls -l
total 0
dr-xr-xr-x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
total 16
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file2

この部分は多少混乱している可能性がありますが、読み取るだけで実行しない限り、実際にはディレクトリ内のファイルのリストを見ることができますが、inodeメタデータは読み取れないため、権限は拒否されますが、ファイルの一覧は表示され続けます。次のディレクトリに...

/a$ chmod -x b/
/a$ ls -l
total 0
dr--r--r--  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: file1: Permission denied
ls: file2: Permission denied

答え2

ほとんどの場合、ディレクトリ全体(サブディレクトリを含む)へのアクセスと使用を防ぐために、そのディレクトリを非再帰的に削除するだけです-x。したがって、何の害もなくサブディレクトリをそのままにすることができました+x

サブディレクトリに対する権限を維持することは、いくつかの理由で役に立ちます(特に-xすべての人には適用されませんが、少なくとも1人のユーザーがまだ作業を実行できる場合)。

たとえば、そのディレクトリ構造の権限を変更しながら、そのコンテナディレクトリの使用を一時的にブロックし、+x1回の操作でツリー全体へのアクセスを再度有効にする(最上位ディレクトリに付与)ことができます。

また、スクリプト(必ずしも所有者が実行する必要はありません)がディレクトリツリーを一時的な場所(他の人が読んではいけません)にバックアップし、すべてをtarファイルに保存してディレクトリツリーの権限設定を維持する状況が発生する可能性があります。 。

答え3

+x次のような場合は、非再帰的権限を使用したいと思います。

chmod g+x /a /a/b /a/b/c /a/b/c/d /a/b/c/d/e

(ユーザーが各ディレクトリグループのメンバーであるとします。そうでない場合は、chmod o+xそのディレクトリに対してこれを行う必要があります。)

ユーザーが操作を正常に実行するには、ls /a/b/c/d/e/folder実行権限が必要です。すべて読み取り権限を持つパスのディレクトリですfolder

そうすれば

chmod g+x -R /a

動作しますが、グループに実行権限を付与します。すべて/a 以下のファイルとディレクトリ。これは不要で、ファイルに合わない可能性があります。

答え4

ディレクトリからxビットを削除する一般的なケースは、ユーザーをホームディレクトリにロックすることです。限られた殻cd絶対パス名への参照を許可せず、絶対パスを使用したプログラムの実行を許可しないことを選択できます。また、cd ..ホームディレクトリの親ディレクトリにアクセスできないため、効果的にロックされ、$ PATHにないプログラムを実行できません。

関連情報