我想以 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 身份运行那些特定命令。