(Ubuntu) setuid bash 不起作用

(Ubuntu) setuid bash 不起作用

以下是代码:

(根:)

# mkdir /test
# cp /bin/bash /test/sbash
# chmod a+s /test/sbash

(用户1:)

$ cd /test
$ ./sbash
$ mkdir trycreate
mkdir: cannot create directory `trycreate': Permission denied

设置了 setuid 位的 bash 脚本也不起作用。

顺便说一下,我的 setuid perl 脚本可以工作:

test.pl:(设置了 setuid 位,所有者=root)

#!/usr/bin/perl
mkdir('/test/tryperlcreate') or die 'failed'; 

用户1执行test.pl将创建root拥有的目录。

答案1

尝试使用 -p 执行 exec ./sbash。

sh:~# cp /bin/bash /bin/ape
sh:~# chmod +s /bin/ape
sh:~**$** /bin/ape -p
ape-3.2#

答案2

幸运的是,你不能让脚本具有 SUID 权限。

不过,您可能对这里的 SUID-wrapper 程序感兴趣:http://isptools.sourceforge.net/suid-wrap.html

我还应该补充一点,在执行此操作之前,请务必确保您确实需要这样做。SUID 二进制文件可能会成为系统中一个巨大的漏洞。

答案3

我可以重新发布那些已经被做过的事情,但这篇文章非常值得一读。

基本上 setuid shell 脚本默认不起作用

http://www.faqs.org/faqs/unix-faq/faq/part4/section-7.html

答案4

正如其他人提到的,这是设计使然。

尝试使用 sudo 而不是 setuid 脚本。

相关内容