7

考虑到SUID shell 脚本的危险,是否有更安全的方法可以在 Linux 中为具有 root 权限的脚本(bash、PHP)提供无密码访问权限?

(Ubuntu 8.10)

4

9 回答 9

15

替代文字

于 2008-12-29T12:33:56.813 回答
13

你可以考虑sudo

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

编辑:根据克里斯的评论,对于某些命令,有一个选项根本不需要密码,有关详细信息,请参见此处。还可以设置不过度提示输入密码,即一次输入密码可以在一段时间内用于多个命令。

顺便说一句,sudo 是内置在 Ubuntu 中的,并且与 Gnome 很好地集成在一起。当 ubuntu 提示您输入密码以执行特权操作时,这就是 sudo 的底层。

于 2008-12-29T12:10:50.650 回答
6

如果您使用 sudo 路线,请务必查看 sudoers 手册页的“防止壳逃逸”部分。

于 2008-12-30T02:49:21.063 回答
5

我会推荐sudo。确保适当收紧sudoers文件;是的,您可以允许在不请求密码的情况下执行某些命令。

于 2008-12-29T12:11:20.977 回答
4

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

  • 不要用C写它,你会用双脚射击自己。
  • 检查所有输入。
  • 尽快放弃特权。
  • 保持简短。

  • 于 2008-12-29T12:32:05.663 回答
    2

    由于已经提到了sudo ,您可能需要考虑各种沙盒环境,具体取决于您的需要——例如,监狱或类似环境。

    于 2008-12-29T12:23:45.243 回答
    1

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

    于 2008-12-30T09:10:21.310 回答
    1

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

    于 2008-12-30T14:59:02.963 回答
    0

    如果用例是在 VirtualBox 下运行的机器并且安全性不是真正的问题,那么您只需要一个挡光板来防止自己在脚上开枪,然后呢?(那么安全论点就没有意义了,因为由于 VirtualBox 通过 NAT 隔离它的方式,机器是否被一个无论如何都看不到的外人破坏并不重要。)

    于 2013-10-23T11:21:10.960 回答