含まれているすべての通常ファイルに対してrw-rw-r--
、含まれているすべてのディレクトリに対してrwxrwxr-x
のアクセス許可が必要なディレクトリのコレクションがあります。 setfacl -R -d -m g::rw /directory/name
のようなものを使用して、すべての通常のファイルとディレクトリのデフォルトのアクセス許可を設定できますが、これにより、新しいファイルと新しいディレクトリのデフォルトのアクセス許可が同じ値に設定されます。
グループのデフォルトの権限をrwx
で、ファイルのデフォルトの権限をrw
だけにして、ファイルシステムのチャンクを作成するにはどうすればよいですか?
すべてにx
フラグを設定すると、ユーザーの「作成」権限も有効になります。つまり、通常、ファイルにはx
フラグがありません。
$ setfacl -d -m u::rwx .
$ setfacl -d -m g::rwx .
$ setfacl -d -m o::rx .
$ getfacl .
# file: .
# owner: sweh
# group: sweh
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
$ mkdir DIR
$ ls -ld DIR
drwxrwxr-x+ 2 sweh sweh 4096 Aug 10 20:05 DIR
$ touch file
$ ls -l file
-rw-rw-r-- 1 sweh sweh 0 Aug 10 20:05 file
$ touch DIR/file
$ ls -l DIR/file
-rw-rw-r-- 1 sweh sweh 0 Aug 10 20:06 DIR/file
これは、umaskの変更後も存続します。
$ umask 077
$ mkdir DIR2
$ ls -ld DIR2
drwxrwxr-x+ 2 sweh sweh 4096 Aug 10 20:08 DIR2
$ touch file3
$ ls -l file3
-rw-rw-r-- 1 sweh sweh 0 Aug 10 20:08 file3
$ > file4
$ ls -l file4
-rw-rw-r-- 1 sweh sweh 0 Aug 10 20:08 file4
新しく作成されたディレクトリは、デフォルトのACLを継承します。
$ getfacl DIR2
# file: DIR2
# owner: sweh
# group: sweh
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
ただし、コンパイルされたプログラムからx
フラグは削除されません。
$ gcc -o x x.c
$ ls -l x
-rwxrwxr-x 1 sweh sweh 6680 Aug 10 20:12 x
この場合、これはgcc
がchmod
を実行するため、デフォルトをオーバーライドするためです。
open("x", O_RDWR|O_CREAT|O_TRUNC, 0666) = 3
....
chmod("x", 0775)