sudo:apache 在 CentOS 上重新启动服务

sudo:apache 在 CentOS 上重新启动服务

我需要我的 Web 应用程序重新启动 dansguardian 服务(在 CentOS 上),因此它需要运行“/sbin/service dansguardian restart”我在 /home/topological 中有一个名为 apacherestart.sh 的 shell 脚本,它执行以下操作:

#!/bin/sh
id=`id`
/sbin/service dansguardian restart
r=$?
return $r

运行正常(脚本中的 logger 语句用于测试输出到 syslog,所以我知道它正在运行)为了使其运行,我将其放入 /etc/sudoers 中:

User_Alias      APACHE=www
# Cmnd alias specification
Cmnd_Alias      HTTPRESTART=/home/topological/apacherestart.sh,/sbin/e-smith/db,/etc/rc7.d/S91dansguardian
# Defaults specification
# User privilege specification
root    ALL=(ALL) ALL
APACHE  ALL=(ALL) NOPASSWD: HTTPRESTART

到目前为止一切顺利。但服务没有重新启动。为了测试这一点,我创建了一个用户 david,并将 /etc/passwd 中的 uid/gid 伪造为与 www 相同:

www:x:102:102:e-smith web server:/home/e-smith:/bin/false
david:x:102:102:David:/home/e-smith/files/users/david:/bin/bash

然后以 david 身份登录并尝试运行 apacherestart.sh。我遇到的问题是:

/etc/rc7.d/S91dansguardian: line 51: /sbin/e-smith/db: Permission denied

即使 S91dansguardian 和 db 在 sudoers 命令列表中。

有任何想法吗?

答案1

对我来说,这看起来不像是 sudo 错误消息——它看起来像是标准权限消息。

/sbin/e-smith/db如果它是一个脚本,那么它的权限是什么?它的 shebang 行(以及该程序的权限)是什么?

另外,您如何调用该脚本?仅仅因为它在 sudoers 列表中被提及并不意味着它会神奇地变得特别——您实际上需要通过 来调用它sudo

答案2

e-smith 脚本是什么?另外,为什么您要用 Cmnd_Alias 来运行这一切,而不是将它们放在 apacherestart.sh 脚本中?

答案3

根据 Joe H. 的回答:

chmod a+rx /sbin/e-smith
chmod o+x /sbin/e-smith/db

相关内容