为什么 suid 位对 shell 或 perl 脚本没有影响?

为什么 suid 位对 shell 或 perl 脚本没有影响?

作为使用 suid 位的实验,我尝试编写一个apt-get update从 bash 脚本运行的脚本,然后在其上设置 suid 位,这样我就可以运行~/update或执行其他操作。

apt-get update这里可以是任何东西 - 一些在特权套接字上侦听的程序,或者写入/或任何其他必须以 root 身份运行的程序。请不要抓住apt-get update这里。

第一次尝试是这样的,但没有成功,失败了can't get lock, are you root?。原因似乎是setuid 位似乎对 bash 没有影响

#!/bin/bash
apt-get update

所以我想我应该尝试绕过外壳,但这也不起作用,出于同样的原因。

#!/usr/bin/perl
system("apt-get", "update").

我的权限是正确的(据我所知)- sudo chmod 4755 ~/update

我是否误解了 setuid,或者我只是错过了一些简单的东西?

答案1

suid bit已禁用脚本多数情况linux和unix发行版,因为它打开了几个安全漏洞。

但是,本机命令和二进制可执行文件可以与suid bit.

答案2

为了这个工作,尝试

cp /bin/bash /bin/mybash
chmod 4755 /bin/mybash 

并在脚本中使用/bin/mybashas shebang (在第一行)。#!/bin/mybash

你应该在生产系统上避免这种情况。

相关内容