それはWeb開発者のためのサーバーです。開発者が多い。すべてのdevelopers
++はPHP
グループApache
に属しますwww
。開発ディレクトリがあります - development
。
目標はdevelopment
ディレクトリ内のすべてのファイルに755
権限があり、開発者がディレクトリdevelopment
にファイルを作成して変更するたびに、ファイルにはまだ755
。
だから私は多くのacl
チュートリアル、ガイド、ガイドを読んでいましたが、まだ望む結果を得ることができませんでした。
- マイディスクのインストールには
acl
- 私は持っています
chown -R www:www development
- 次へ追加
chmod g+s development
私はディレクトリにいくつかの
acl
ルールを設定し、development
次のような結果を得ました。$ getfacl development # file: development # owner: www # group: www # flags: -s- user::rwx user:www:rwx group::rwx group:www:rwx mask::rwx other::r-x default:user::rwx default:user:www:rwx default:group::rwx default:group:www:rwx default:mask::rwx default:other::r-x p.s. I know its messy, was doing a number of tests
私の考えによると、
ACL
ディレクトリにこれらの規則がある場合は、私の作業は完了する必要がありますが、dirにファイルを作成しようとすると、次のような結果がdevelopment
表示されます。-rw-rw-r--+ 1 www www 0 Nov 21 09:14 newfile
rw-
なぜ作られたのか分からないようですrwx
。
私が見逃している単純なものかもしれませんし、私が理解していない一般的な概念かもしれません。
答え1
デフォルトのACLは、noを指定するumaskを置き換えます。基本権限がありますが、最高新しいファイルを作成する権限。この場合はrwxrwxr-x
。
その後、アプリはopen
目的の権限を使用してまたはを呼び出します。creat
ほとんどすべてのアプリケーションはrw-rw-rw-
ファイルを要求します。
を実行してこれを確認できますstrace
。
$ strace -e trace=file touch newfile
...
open("newfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
(0666
同じですrw-rw-rw-
。)
両方の権限は、ビットごとのANDを使用して組み合わせることによって取得されますrw-rw-r--
。
rwxrwxr-x # default ACL
rw-rw-rw- # permission requested (e.g. by touch, vim, etc.)
& _________
rw-rw-r-- # effective permissions
その他の説明はこちらPOSIX アクセス制御リスト- 「基本ACLの例」。
したがって、実際の質問は:なぜこれらのファイルが実行可能なのですか?