如何让用户运行具有root权限的脚本?

时间:2008-12-29 12:09:29

标签: linux security scripting ubuntu passwords

鉴于dangers of SUID shell scripts,是否有更安全的方式在Linux中使用root权限对脚本(bash,PHP)进行无密码访问?

(Ubuntu 8.10)

9 个答案:

答案 0 :(得分:15)

alt text

答案 1 :(得分:13)

您可以考虑sudo

虽然不是'无密码',但它不需要为用户提供root密码。它还可以提供脚本使用的审计跟踪。

编辑:根据Chris的评论,某些命令根本不需要密码,有关详细信息,请参阅here。它也可以设置为不过度提示密码,即一次输入密码可以在一段时间内用于多个命令。

顺便说一下,sudo内置于Ubuntu并与Gnome很好地集成。当ubuntu提示您输入密码以进行特权操作时,那就是sudo。

答案 2 :(得分:6)

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

答案 3 :(得分:5)

我会推荐sudo。务必妥善收紧sudoers文件;是的,你可以允许执行一些命令而不要求密码。

答案 4 :(得分:4)

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

  • 不要用C语写,你会双脚射击。
  • 检查所有输入。
  • 尽快删除权限。
  • 保持简短。

  • 答案 5 :(得分:2)

    由于已经提到 sudo ,您可能需要考虑各种沙盒环境,具体取决于您的需求 - 例如jail或类似情况。

    答案 6 :(得分:1)

    为了提高安全性,请考虑是否可以将操作作为特殊用户或组进行操作,该用户或组具有所需的访问权限。然后,您可以为该用户或组创建脚本setuid / setgid。

    答案 7 :(得分:1)

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

    答案 8 :(得分:0)

    如果用例是在VirtualBox下运行的机器并且安全性不是真正的问题,那么你只需要一个光栅来防止自己在脚下射击,那么呢? (然后安全性参数真的没有意义,因为无论如何由于VirtualBox通过NAT将其隔离的方式,无论如何都无法看到它而导致机器受到损害并不重要。)

    相关问题