フォルダのACL再帰実行権限を設定して、ファイルを実行可能にします。

フォルダのACL再帰実行権限を設定して、ファイルを実行可能にします。

Ubuntu 20.04 LTSを実行し、Nginx 1.18.0およびPHP-FPMを実行してWebサイトを提供します。

/var/wwwFPMユーザーが所有し、fooサイトをホストするドキュメントルートとして新しいフォルダを作成します。

$ sudo mkdir foo
$ sudo chown -R foo:foo
$ sudo chmod -R u=rwX,g=rX,o= foo
$ sudo chmod -R g+s foo
$ ls -la

drwxr-s--- ... foo foo ... foo

グループにNginxを追加しましたが、書き込みfooができないことを望むので、グループ権限を上記のrXように設定しました。

デフォルトのACLを設定しました。デフォルトでは、すべての新しいファイルに同じ権限を付与したいと思います。

$ sudo setfacl -Rm d:u::rwX foo
$ getfacl foo

user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:other::---

rwX私はディレクトリを閲覧できますが、基本的にファイルを実行可能にしたくないので、特に使用しました。

今AliceとBobはそこに何かをしたいので、両方をグループfooに追加します。

$ sudo usermod -aG foo bob
$ sudo usermod -aG foo alice

Bobにアクセスを許可しました。fooAliceとBobがグループの人間ユーザーとして書き込むことができるように、ACLオーバーライドを追加したいと思います。まずご飯:

$ sudo setfacl -Rm u:bob:rwX,d:u:bob:rwX foo
$ getfacl foo

user::rwx
user:bob:rwx
group::r-x
mask::rwx
other::---
default:user::rwx
default:user:bob:rwx
default:group::r-x
default:mask::rwx
default:other::---

Bobは新たに発見した能力をテストします。

$ touch foo/bobfile
$ ls -la foo

drwxrws---+ ... foo  foo  ... .
drwxr-xr-x  ... root root ... ..
-rw-rw----+ ... bob  foo  ... bobfile

lsこれでグループ書き込み権限があることがわかりましたが、これはbobfile担当者lsです1 つ以上のエンティティに適用される使用可能な最高権限すべてのユーザーがそれを持っているわけではありません。

アリスにアクセス権を与えます。私は彼女がボブと同じ権限を持つことを望んでいます。

$ sudo setfacl -Rm u:alice:rwX,d:u:alice:rwX foo
$ getfacl foo

user::rwx
user:bob:rwx
user:alice:rwx
group::r-x
mask::rwx
other::---
default:user::rwx
default:user:bob:rwx
default:user:alice:rwx
default:group::r-x
default:mask::rwx
default:other::---

AliceはBobのコマンドを実行できるようになりました。文書。ああ?

$ ls -la foo

drwxrws---+ ... foo  foo  ... .
drwxr-xr-x  ... root root ... ..
-rw-rwx---+ ... bob  foo  ... bobfile*

実際、Aliceは今すぐ実行できますfoo/bobfile。一方、所有者のボブは自分のファイルを実行できません。

Aliceが新しいファイルを作成すると、そのファイルを実行できなくなり、bobfileACLが追加されたときにすでに存在していたファイルのみが実行されます。

興味深いことに、BobはAliceのファイルも実行できません。私にとって、これはACL基本項目と非基本項目の違いを示しています。

私は2つのことを間違って理解したようです。

  1. x重要度はX少なくともACLにとってはそうです。 Aliceがここで既存のファイルに対する実行権限を取得するのはなぜですか?

  2. XACLエントリを追加すると既存のファイルを実行できますが、新しいファイルは実行できないため、ACLのデフォルトルールとデフォルト以外のルールが重要です。

目的の結果を得るための正しいコマンドは何ですか?


修正する:状況がさらに奇妙になります。

上記の結果の後、すべてのファイルに対する実行権限を削除しました。

$ sudo chmod -R ug-x+X foo

これは期待どおりに機能します。

しかし、その後、AliceのACLエントリを削除しました。

$ sudo setfacl -Rx u:alice,d:u:alice foo

何か合わせてみて?これにより、すべてのファイルがbob実行可能になりますalice

$ ls -la foo

-rw-rwx---+ ... alice foo ... alicefile*
-rw-rwx---+ ... bob   foo ... bobfile*
-rw-rw----+ ... foo   foo ... foofile

これらのファイルのテスト実行は次のようになります。

  • これで、アリスは自分の所有ファイルを再実行できるようになりました。bob
  • Bobは所有している次のファイルを実行できるようになりました。alice
  • aliceこれでfooファイルとfooファイルを実行できますbob
  • AliceとBobはどちらも独自のファイルを実行できません。
  • どちらも所有しているファイルを実行できません。foo

この行動により完全に慌てたので、ここに助けと洞察を与えてくれてありがとう。ありがとうございます。


注:以前にこのコンテンツを公開したことがあります。サーバー障害気づく前に、これはより良い場所かもしれません。これがルールに違反している場合は、お知らせください。他の質問を削除します。

ベストアンサー1

おすすめ記事