Apache-2.2

sudo: apache 在 CentOS 上重新啟動服務

  • June 10, 2010

我需要我的網路應用程序來重新啟動 dansguardian 服務(在 CentOS 上),因此它需要執行 ‘/sbin/service dansguardian restart’ 我在 /home/topological 中有一個名為 apacherestart.sh 的 shellscript,它執行以下操作:

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

這執行正常(腳本中的記錄器語句用於測試 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 命令列表中。

有任何想法嗎?

對我來說,這看起來不像 sudo 錯誤消息——它看起來像標準權限消息。

如果是腳本,它的權限/sbin/e-smith/db是什麼,它的 shebang 行(以及該程序的權限)是什麼?

另外,你是如何呼叫腳本的?僅僅因為它在 sudoers 列表中被提及並不意味著它會神奇地變得特別——你實際上需要通過sudo.

什麼是電子史密斯腳本?另外,您為什麼要從 Cmnd_Alias 中執行這一切,而不是在 apacherestart.sh 腳本中將其一起執行?

引用自:https://serverfault.com/questions/150012