(Ubuntu) setuid bash 不起作用

Xiè*_*léi 4 bash setuid

这是代码:

(根:)

# mkdir /test
# cp /bin/bash /test/sbash
# chmod a+s /test/sbash
Run Code Online (Sandbox Code Playgroud)

(用户 1:)

$ cd /test
$ ./sbash
$ mkdir trycreate
mkdir: cannot create directory `trycreate': Permission denied
Run Code Online (Sandbox Code Playgroud)

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

顺便说一句,我的 setuid perl 脚本有效:

test.pl:(设置了 setuid 位,owner=root)

#!/usr/bin/perl
mkdir('/test/tryperlcreate') or die 'failed'; 
Run Code Online (Sandbox Code Playgroud)

由 user1 执行 test.pl 将创建 root 拥有的目录。

Mat*_*ons 7

您不能将脚本设为 SUID。幸运的是。

不过,您可能对此处的 SUID 包装程序感兴趣:http : //isptools.sourceforge.net/suid-wrap.html

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


Phi*_*lds 5

我可以重新发布已经死了的东西,但这是一个很好的阅读。

基本上 setuid shell 脚本在默认情况下不起作用

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

  • 不,它不是通过文件摘要来完成的。它不适用于任何口译员。Perl 本身就是这样做的。来自'perldoc perlsec':当Perl 注意到Perl 脚本上无用的setuid/gid 位时,它可以模拟setuid 和setgid 机制。它通过一个名为 suidperl 的特殊可执行文件来执行此操作,如果需要,该可执行文件会自动为您调用。 (4认同)

3mo*_*olo 5

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

sh:~# cp /bin/bash /bin/ape
sh:~# chmod +s /bin/ape
sh:~**$** /bin/ape -p
ape-3.2#
Run Code Online (Sandbox Code Playgroud)

  • `-p` 选项确实有效,但对于 shell 脚本来说,shebang `#!/bin/bash -p` 不起作用,而 `#!/bin/renamed-bash` 有效。我想知道内核如何区分这一点,以及我是否可以将其配置为强制覆盖以允许它? (4认同)