作为使用 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/mybash
as shebang (在第一行)。#!/bin/mybash
你应该在生产系统上避免这种情况。