lstatに必要な権限を確認できません。

lstatに必要な権限を確認できません。

lstatファイルシステムを呼び出すDebian 10で奇妙な権限の問題が発生しましたXFS。引き続き言及しています。このリンク拡張ACLの仕組みについて

これ男性このページには、execute(x)このパスより前のすべてのディレクトリに権限が必要であることが示されます。

次のディレクトリ階層があります。

$ getfacl /dir1
# owner: root
# group: testgroup
user::rwx
group::r-x
mask::rwx
other::---

$ getfacl /dir1/dir2
# owner: root
# group: root
user::rwx
group::---
mask::rwx
other::---

$ getfacl /dir1/dir2/dir3
# owner: root
# group: root
user::rwx
group::---
mask::rwx
other::--x

testgroupユーザーがいます。GID: 1005testuserUID: 1005, GID: 100

だから基本的にtestuser いいえtestgroupうまくいくのは私のプログラムが実行されたときUID,GIDです1005,0。私はlstatその行動を理解しようとしています。

マニュアルページによると、実行権限があるため、実行できるはずですtestuserが、実行できないはずです。lstat/dir1/lstat /dir1/dir2正しいですか?

setuid(1005)最初に実行してから、パスlstatで実行して大きなプログラムの機能を模倣する小さなCコードがあります。rootユーザーを開く/dir1ことでこのコードを実行します。/dir1/dir2

$ ./lstat_setuid /dir1/
Real UID: 1005, Effective UID: 1005
Real GID: 0, Effective GID: 0
So the input File type is =>   Directory
No. of link list:12
Ownership: UID=0   GID=1005
inode no 128
...
$ ./lstat_setuid /dir1/dir2
Real UID: 1005, Effective UID: 1005
Real GID: 0, Effective GID: 0
So the input File type is =>   Directory
No. of link list:6
Ownership: UID=0   GID=0
inode no 153
...

これは失敗するでしょう、そうですか?

より詳細にドリルダウンすると、期待/dir1/dir2/dir3どおりに失敗します。

# ./lstat_setuid /dir1/dir2/dir3
Real UID: 1005, Effective UID: 1005
Real GID: 0, Effective GID: 0
some error for lstat: Permission denied

ベストアンサー1

それを発見:)

setgroups電話番号を忘れたと思います。

私が実行しているユーザーがlstat一部であるため、testgroup呼び出し後も追加のグループリストにはまだ権限があるグループが含まれています。execute(x)/dirsetegid()

を呼び出すと、setgroups同じ順序setegidで期待どおりに失敗します。seteuidlstat/dir1/dir2

./lstat_setuid /dir1/dir2/
Real UID: 1005, Effective UID: 1005
Real GID: 100, Effective GID: 100
some error for lstat: Permission denied

おすすめ記事