つまり、これは状況です。
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の私の考えによると 、ディレクトリにそのようなルールがある場合、私のタスクは達成されるはずですが、developmentでファイルを作成しようとすると dir、私は得る:-rw-rw-r--+ 1 www www 0 Nov 21 09:14 newfile
なぜrw-が作成されるのか理解できないようです 代わりにrwx 。
おそらく、私が見逃した単純なものか、理解できない一般的な概念です。
承認された回答:
デフォルトのACLは、 defaultではないことを指定する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-と同じです 。)
2つの権限は、ビットごとの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の例」を参照してください。
したがって、本当の問題は、ファイルを実行可能にする必要があるのはなぜですか?