运行设置了 SUID 位的脚本与使用 sudo(或 root)运行相同脚本的工作是否相同?

运行设置了 SUID 位的脚本与使用 sudo(或 root)运行相同脚本的工作是否相同?

我想以 root 权限运行一些脚本,但使用 apache 用户。因此,我在脚本文件中添加了 SUID 位,但这并没有像我预期的那样起作用。

脚本文件所有者是root。

rwsr-xr-x 1 root root 2438年8月8日 12:10 script.sh

当我以 root 身份从 bash 运行它时,一切正常...但是当我以 apache 用户身份运行它时(它由以 apache 身份运行的 svn hook post-coomit 脚本启动)我收到一些权限被拒绝的消息。

这对我来说很奇怪,或者我误解了SUID位的挖掘。(用户在执行文件/程序/命令时将获得文件所有者的权限以及所有者UID和GID。)

那么有什么区别呢?我是否应该在 /etc/sudoers 中添加适当的行,以便能够以 root 身份运行该脚本...

答案1

在大多数环境中,bash 脚本(和大多数其他脚本)不能以 SUID 身份运行(由于严重的安全问题*)。

如果您只需要以 root 身份运行几个命令,则可以进行编辑/etc/sudoers以允许 apache 进程仅以 root 身份运行那些特定命令。

*http://www.vidarholen.net/contents/blog/?p=30

相关内容