
Asでは、デフォルトのACLをroot
作成して設定しました。/test
setfacl -m -d dog:rwx /test
getfaclの出力を確認しました。
# file: test
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:dog:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
今すぐユーザーとしてdog
ディレクトリを作成しようとすると、/test
次の結果が表示されます。
mkdir: can't create directory 'sub': Permission denied
なぜですか?デフォルトなしでsetfaclを使用すると、getfaclがuser:dog:rwx
代わりに表示されdefault:user:dog:rwx
、dog
そこにサブディレクトリが作成される可能性があります。
答え1
ACLを割り当てるときに使用するsetfacl -m -d ...
と、動作が異なります。setfacl -m ...
これ基本ACLそれらはすべて継承に使用されます。だから割り当てる必要がありますACL与えたいときACL権限ユーザーに割り当てる基本ACL特定のディレクトリの下の権限を継承します。
説明する
まず、ディレクトリをルートに移動し/test
てその権限を確認しました。
$> mkdir /test ; ls -ld /test
#Output
drwxr-xr-x 2 root root 4096 Dec 1 17:52 test
ご覧のとおり、このグループと他のグループはそうではありません。書く基本権限。これら2つのコマンドの違いを見てみましょうsetfacl
。
使用setfacl -m guest:rwx /test
rootでコマンドを実行すると、次のように出力を表示できます。
ls -ld /test
#Output
drwxrwxr-x+ 2 root root 4096 Dec 1 17:57 test
上記のように、今書くグループ権限。ところで削除するとACL以下を使用するsetfacl --remove-all /test
と、権限が以前の権限()に復元されたことがls -ld /test
わかります。/test
drwxr-xr-x
getfacl -e /test
#Output
# file: test
# owner: root
# group: root
user::rwx
user:guest:rwx #effective:rwx
group::r-x #effective:r-x
mask::rwx
other::r-x
私は方法をgetfacl -e
知るのに役立つすべての有効な権利を印刷しました。ACL働く
/test
それでは、ディレクトリの下にファイルとguest
ユーザーを作成してみましょうedgar
。
(user:guest)> touch /test/fuzz
#All is ok!
(user:edgar)> touch /test/buzz
#touch: cannot touch '/test/buzz': Permission denied
guest
ユーザーは/test/fuzz
ファイルを作成できますが作成できないことがわかりますedgar
。この動作は正しい理由です。前方十字靭帯割り当てguest
。
使用setfacl -dm guest:rwx /test
私の場合、構文はsetfacl -m -d guest:rwx /test
無効です(私はopenSUSE Tumbleweedを使用しています)。を使用することもできますsetfacl -m d:guest:rwx /test
。
次に、コマンドを実行します。基本ACL私は以下を持っています:
ls -ld /test
drwxr-xr-x+ 2 root root 4096 Dec 1 18:39 test
getfacl -e /test
# file: test
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:guest:rwx #effective:rwx
default:group::r-x #effective:r-x
default:mask::rwx
default:other::r-x
今/test
ディレクトリに書くグループ権限。利用してgetfacl ...
調べました。デフォルトゲストユーザー権限がありますが、前述のrwx
ように継承するために使用されます。したがって、あなたの場合、dog
ユーザーがディレクトリに書き込むことができるようにするには、/test
次のようにしますsetfacl -m dog:rwx /test
。
基本ACLまたは継承されたACL情報
- 以下を設定します。前方十字靭帯そして基本アクセス制御リスト:
#ACL
setfacl -m guest:rwx /test
#Default ACL
sudo setfacl -dm guest:r /test
- これで、ユーザーの下にディレクトリを作成します
/test
。guest
(user:guest) /test: mkdir only_r
(user:guest) /test: ls -ld only_r
drwxr-xr-x+ 2 guest guest 4096 Dec 1 19:19 only_r/
(user:guest): getfacl -e only_r
# file: only_r/
# owner: guest
# group: guest
user::rwx
user:edgar:r-- #effective:r--
user:guest:r-- #effective:r--
group::r-x #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:user:edgar:r-- #effective:r--
default:user:guest:r-- #effective:r--
default:group::r-x #effective:r-x
default:mask::r-x
default:other::r-x
only_r
それでは、ディレクトリを変更してファイルを作成してみましょう。
(user:guest) /test: cd only_r
(user:guest) /test/only_r: touch fuzz
(user:guest) /test/only_r: ls
fuzz
上記のように、ACLはまだありませんでしたが、only_rに変更してファイルを作成できました。実装するそして書く権限(ディレクトリに実行権限がないとcd
実行できません)が、Unix権限と所有者はユーザーとファイルを許可するため、drwxr-xr-x+ 2 guest guest
この動作は正しいです。guest
cd
create
/test/only_r
- 最後に、
edgar
ユーザーと一緒にいくつかのファイルをcd
作成しましょう/test/only_r
。
(user:edgar) : cd /test/only_r
cd: permission denied: /test/only_r
(user:edgar) : echo jaja > only_r/fuzzbuzz
permission denied: only_r/fuzzbuzz