というディレクトリを作成し、newDir
それが属するグループを変更しましたmkdir newDir && chgrp test-group newDir
。
me
私がこれを行うとき、私はユーザーです。
呼び出しはstat newDir
予想される出力を生成します。
File: newDir
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 801h/2049d Inode: 10756102 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1001/ me) Gid: ( 1003/test-group)
Access: 2018-01-27 17:03:07.514864274 +0100
Modify: 2018-01-27 17:03:07.514864274 +0100
Change: 2018-01-27 17:05:08.317543163 +0100
Birth: -
後でユーザーとしてログインし、をotherUser
使用してディレクトリにグループID(setgid)権限ビットを設定しようとしましたchmod g+s newDir
。
残念ながら、stat
権限が変更されていないことを確認しました。ただし、stderrではエラーは発生せず、コマンドの結果はchmod
示されているように0ですecho $?
。
なぜchmod g+s newDir
動作しないのですか?
私はArch Linux 4.14.13を使用しています。
答え1
chmod g+s newDir
ユーザーとして実行しても成功しない理由は、そのグループが属するグループに属していないotherUser
ためです。otherUser
test-group
newDir
そのユーザーに切り替えられ、操作は正常にtest-group
行われます。chmod g+s newDir
答え2
Mattiasの答えに加えて、数値的にそして絶対に行うには:
chmod 2755 newDir
ターゲットグループに自分を追加するには、次の手順に従います。
usermod -a -G otheruser test-group
newgrp
場合によっては、newgrpがグループを更新しないように見えるため、再度ログインする必要があります。
GUIDビットを設定したいグループの一部でなければならず、エラーなしで失敗することは奇妙ですが、それはすべてです。