我有一个 setuid 程序 (getpwd),只有在 root 拥有时才能按预期运行。
-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