我如何让用户使用root权限运行脚本?

考虑到SUID shell脚本的危险 ,是否有一种更安全的方法来在Linux中拥有root权限的无脚本访问脚本(bash,PHP)?

Ubuntu 8.10)

你可以考虑sudo 。

虽然不是“无密码”,但并不要求用户获得root密码。 它也可以提供脚本使用的审计跟踪。

编辑:根据克里斯的评论,有一个选项不要求某些命令的密码,详情请看这里 。 也可以设置不要过多地输入密码,也就是说一次输入密码对于一段时间内的多个命令来说是好的。

顺便说一句,sudo是内置到Ubuntu和Gnome很好地集成。 当Ubuntu提示你输入密码进行特权操作时,这是sudo下的。

替代文字

如果你走sudo路线,务必查看sudoers手册页的“ PREVENTING SHELL ESCAPES ”部分。

我会推荐sudo 。 一定要适当地收紧你的sudoers文件; 是的,你可以允许执行一些命令,而不需要输入密码。

从安全的角度来看,配置sudo让普通用户以提升的权限运行shell脚本比让suid root脚本更好。 所有的陷阱依然存在。 相反,你应该写一个适当的程序,进行广泛的安全检查。 有几点需要考虑:

  • 不要用C写出来,你会用双脚开枪。
  • 检查所有输入。
  • 尽快删除权限。
  • 保持简短。
  • 由于sudo已经被提及,您可能需要考虑各种沙盒环境,这取决于您的需求 – 例如监狱或类似的。

    对于一个真正重量级的解决方案,考虑一个MAC(强制访问控制)系统,如SELinux,AppArmor,TrustedBSD等。

    为了提高安全性,考虑是否有可能以特定用户或组的身份执行操作,这些特定用户或组具有完全所需的访问权限。 然后,您可以为该用户或组创建脚本setuid / setgid。

    如果用例是在VirtualBox下运行的机器,安全性不是真正的问题,那么您只需要一个光栅来防止自己在脚下自拍,那么呢? (然后,安全性论证并没有什么意义,因为无论如何,由于VirtualBox通过NAT对其进行隔离,外部人员无法看到它,这并不重要。