Setgid 奇妙な行動

Setgid 奇妙な行動

次のファイルがあります。

----rw---- 1 wojtek users    4 Oct 26 15:56 data.txt
-rwx--s--x 1 wojtek users 8864 Oct 26 16:00 fopen_setgid

私が走るときfopen_setgid

  • その後、daroすべてが期待どおりに機能します。プログラムはusersグループ権限(daroグループではない)として実行されるため、エラーはありません。
  • それではwojtekエラーが発生しますPermission deniedが、理由がわかりません。この場合のように、プログラムがファイルを正常に開くことを許可するグループではなく、usersグループ権限でプログラムを実行する必要はありませんか?wojtekdaro

fopen_setgid開いてみる事だけが残りましたねdata.txt

  • ユーザーはdaro次の1つのグループにのみ属します。daro

  • ユーザーグループは1つだけですwojtekwojtek

  • このグループusersにはメンバーがいません。

私のOSはDebian 9(拡張)です

答え1

参考資料が見つかりませんでしたが、今テストしました。問題は、setgidプロセスのUID、GID、およびファイルとファイルの権限には関係ありません。

ファイルを作成しました。

echo test > test.txt

権限が変更されました

chmod 064 test.txt

これ以上アクセスできません。

$ cat test.txt
cat: test.txt: Permission denied

私のグループにはrwアクセス権がありますが。

$ ls -l test.txt
----rw-r-- 1 myuser myuser 5 Nov  5 16:11 test.txt
$ id
uid=1000(myuser) gid=1000(myuser) groups=1000(myuser),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),129(sambashare)

その後、ファイル所有者を次のように変更してrootファイルを正常に開くことができました。

$ sudo chown root test.txt 
$ ls -l test.txt
----rw-r-- 1 root myuser 5 Nov  5 16:11 test.txt
$ cat test.txt            
test

明らかに、ユーザとグループの両方が一致する場合、所有者アクセスビットはグループアクセスビットよりも優先されます。 (Ubuntu 19.04でテスト)

u+rwしたがって、回避策はファイルの権限を追加するか、ファイルの所有者を他のwojtek所有者に変更することですdaro

関連情報