次のファイルがあります。
----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
グループ権限でプログラムを実行する必要はありませんか?wojtek
daro
fopen_setgid
開いてみる事だけが残りましたねdata.txt
ユーザーは
daro
次の1つのグループにのみ属します。daro
ユーザーグループは1つだけです
wojtek
。wojtek
このグループ
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
。