Apache-2.2
sudo: apache 在 CentOS 上重新啟動服務
我需要我的網路應用程序來重新啟動 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 腳本中將其一起執行?