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人のユーザーがまだ作業を実行できる場合)。
たとえば、そのディレクトリ構造の権限を変更しながら、そのコンテナディレクトリの使用を一時的にブロックし、+x
1回の操作でツリー全体へのアクセスを再度有効にする(最上位ディレクトリに付与)ことができます。
また、スクリプト(必ずしも所有者が実行する必要はありません)がディレクトリツリーを一時的な場所(他の人が読んではいけません)にバックアップし、すべてを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にないプログラムを実行できません。