新しく作成されたすべてのサブディレクトリ(およびサブサブディレクトリなど)にg + sがあることを確認する方法は?

新しく作成されたすべてのサブディレクトリ(およびサブサブディレクトリなど)にg + sがあることを確認する方法は?

グループがある場合は/some/dir実行fooします。

chmod g+s /some/dir

...これで、すべての子供たちもグループに/some/dirなりますfoo

しかし、決定的に新しいサブディレクトリ/some/dir/subdirいいえg+s(ただし、先ほど述べたように、そのグループはです)foo

すべてのサブディレクトリがグループ/some/dirだけでなくfoo権限もg+s継承するようにするにはどうすればよいですか?

FWIW、私のumaskは002、ファイルシステムはnfsで、オプションmount(rw,relatime,vers=3,rsize=20961,wsize=413177,namlen=255,hard‌​,proto=tcp,timeo=450‌​,retrans=2,sec=sys,m‌​ountaddr=xxx.xxx.xxx‌​.xxx,mountvers=3,mou‌​ntport=333,mountprot‌​o=udp,local_lock=non‌​e,addr=xxx.xxx.xxx.x‌​xx)

修正する: 私は今混乱の原因を理解しています。時々ディレクトリグループを変更(使用chgrp)すると、以前に有効になったsetgidビットが無効になるという効果があります。例えば

% rm -rf /some/dir
% mkdir -p /some/dir
% chmod g+s /some/dir
% ls -ld /some/dir
drwxrwsr-x 2 jones jones 0 Nov  7 07:13 /some/dir
% chgrp foo /some/dir
% ls -ld /some/dir
drwxrwxr-x 2 jones jones 0 Nov  7 07:13 /some/dir

(setgidビットは最終的に設定されなくなります。)

私が言ったように、これはただ起こります時々。例えば、上記と同じ順序を繰り返すが、chgrp下で命令を実行すると、ビットはsudo最後setgidにセットされたままである。

権限へのこの影響chgrpに失望しました。

ベストアンサー1

/some/dirsetgid ビットがセットされると、新しいサブディレクトリがする新しく作成されたすべての子孫が適切なグループとsetgidビットを持つように継承します。

setgidビットはを使用して削除できますchgrpPOSIX と

適切な権限を持つプロセスで chgrp を呼び出さない限り、通常のファイルの set-user-ID ビットと set-group-ID ビットが正常に完了したら、別のファイルの set-user-ID ビットと set-group-ID ビットをクリアする必要があります。します。タイプが削除されることがあります。

おすすめ記事