关于suid的一个问题,请教!!
[root@station210 /]# ll test.sh
-rwsr--r-x 1 root root 17 Oct 21 23:19 test.sh
[root@station210 /]# cat test.sh
touch /root/whoo
[root@station210 /]# su - whoo
[whoo@station210 ~]$ cd /
[whoo@station210 /]$ sh test.sh
touch: cannot touch `/root/whoo': Permission denied
[whoo@station210 /]$
我从资料查到:
SUID的程序在运行时,将有效用户ID改变为该程序的所有者ID,使得进程在很大程度上拥有了该程序的所有者的特权。如果被设置为SUID root,那么这个进程将拥有超级用户的特权(当然,一些较新版本的UNIX系统加强了这一方面的安全检测,一定程度上降低了安全隐患)。当进程结束时,又恢复为原来的状态。
但是我上边不能执行,是不是我对suid的理解错了?错在哪了?请高手指点
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
按 kenduest 的说法,是这样的。
不过应该说,是执行脚本的时候不可以。在很多系统上,(/usr)/bin/true 和 (/usr)/bin/false 也是脚本。
那也就是说,suid只能系统已有的指令,比如passwd能用,普通的shell 脚本设置该项不起作用?是不是这个意思??
binfmt_script.c
shell script 的 setuid 属性会被系统忽略.
==