2

rootが所有している場合にのみ期待どおりに実行されるsetuidプログラム(getpwd)があります。

-rwsr-xr-x 1 root root 7981 2011-11-17 18:28 getpwd*

言い換えれば、私のプログラムがユーザー「alice」によってコマンドラインで実行されると、すべて正常に動作します

プログラムはディレクトリ内のファイルを開き/home/secure、内容を画面に出力します。

alice@devbox:/home/alice/tmp$ ./getpwd
setuid is working

ただし、ファイルの所有権を変更してsetuidを設定すると、次のようになります。

chown secure:users getpwd
chmod 4755 getpwd

-rwsr-xr-x 1 secure users 7981 2011-11-17 18:28 getpwd*

ユーザー「alice」として実行した場合、プログラムは実行されません。

alice@devbox:/home/alice/tmp$ ./getpwd
cannot open file /home/secure/test ...

なぜこうなった?

ls -ld /home/ /home/secure/
drwx--x--x 2 secure users 280 Nov 18 11:16 /home/secure/

ls -ld /home/secure/*
-rw------- 1 secure users 33 Nov 15 14:35 /home/secure/test
4

1 に答える 1

3

ユーザー「alice」だけがsecureが所有するsetuidプログラムを実行できるようにするにはどうすればよいですか?

2つの可能なアプローチがあります。1つは従来のUnix権限のみを使用し、もう1つは新しいACLを使用します。

従来のUnix

新しいグループを作成します。おそらく、またはユーザーアカウントALICEとは明らかに異なる何か。のメンバーであることaliceを確認してください。(ファイルを編集するのに最適な方法です。)プログラムの所有権を設定し、ファイルに対するワールド実行権限を削除します。そうすると、グループのメンバーだけがsetuidプログラムを実行できます。aliceALICEgroup(5)vigr(8)group(5)getpwdsecure:ALICEsecureALICEgetpwd

aliceが潜在的に大規模なグループの代理人である場合は、グループに名前を付けSECUREます。(大文字は私の説明にちょうど便利です。大文字に固執する必要はありません。)

Newfangled ACL

setfacl -m u:alice:x getpwd

プログラムはsetfacl(1)少し複雑ですが、従来のUnixパーミッションよりもはるかに複雑なパーミッションを作成できます。これらはかなり異なるため、私が見たほとんどのシステムでは、デフォルトでオンになっていないため、ファイルシステムをマウントaclするときにオプションが必要です。追加のアクセス許可が必要なファイルシステムにmount(8)追加する必要があります。(ただし、使用可能にするために再起動する必要はありません。ファイルシステムがマウントされている限り、通常は再起動するまでは十分です。)acl/etc/fstabmount /file/system -oremount,acl

従来のUnixの方法に固執することをお勧めします。

于 2011-11-18T09:25:27.953 に答える