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