デフォルトのACL rwxをディレクトリに設定し、ユーザーとしてサブディレクトリを作成することはできません。

デフォルトのACL rwxをディレクトリに設定し、ユーザーとしてサブディレクトリを作成することはできません。

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:rwxdogそこにサブディレクトリが作成される可能性があります。

注:仮想マシン内でテストされており、仮想マシン画面のテキストはコピーできないため、スクリーンショットを追加しました。 ここに画像の説明を入力してください。

ベストアンサー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わかります。/testdrwxr-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情報

  1. 以下を設定します。前方十字靭帯そして基本アクセス制御リスト:
#ACL
setfacl -m guest:rwx /test

#Default ACL
sudo setfacl -dm guest:r /test
  1. これで、ユーザーの下にディレクトリを作成します/testguest
(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
  1. 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この動作は正しいです。guestcdcreate/test/only_r

  1. 最後に、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

おすすめ記事