web-dev-qa-db-ja.com

ディレクトリ内の新しいファイルが確実にグループに属するようにする

多数のユーザー(全員がmygroupに属している)がファイルを作成および編集できるときに、共有ディレクトリを作成したいと思います。このディレクトリとサブディレクトリ内のすべてのファイルをmygroupに所属させます。

chgrpを使用して既存のファイルをgroupmygroupに変更しましたが、それでも新しいファイルはユーザーのプライマリグループに属します。 chgrpを繰り返し実行しなくても、新しいファイルが確実にグループに属するようにする方法はありますか。

65
justintime

SetGIDビットを設定します。

chmod g+s dir

ディレクトリ内に作成されたすべての新しいファイルは、グループがディレクトリのグループに設定されます。

スーパーユーザーのブログ投稿 でスティッキービットとその他のLinuxパーミッションビットが説明されています。

SetGIDは、しかし、全く別のボールゲームです。ディレクトリにSetGIDビットが設定されており、そのディレクトリ内にファイルが作成されると、そのファイルのグループ所有権は自動的にそのディレクトリのグループに変更されます。

105
lesmana

フォルダに setgid許可フラグ を設定します。

chmod g+s dirname
11
Daniel Beck

フォルダのグループが自分のものと異なる場合、rootとしてchmodを実行する必要があるかもしれませんが、これを実行する必要があることを示すエラーは発生しません。

須藤なし

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir

$ chmod g+s dir                                     # no errors

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir   # but nothing changed

$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar  9 10:51 nosudo        # and the group is set wrong

sudoと

$ Sudo chmod g+s dir

$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar  9 10:44 dir   # the setgid bit is now on

$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke      0 Mar  9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar  9 10:51 withsudo # and the group is set right
10
LukePH