簡體   English   中英

在沒有超級用戶的情況下重新啟動apache

[英]Restarting apache without being superuser

是否有可能執行正常重啟並檢查apache配置語法而不是root或具有root權限?

我已經嘗試將suid位設置為執行重啟的腳本。 這是腳本本身:

#!/bin/bash

FILENAME=$1
DATE=`date +%Y%m%d`
DIRECTORY='bckp/'
if [ ! -d "$DIRECTORY" ]; then
    echo "Backup directory doesn't exist. Creating one."
    mkdir $DIRECTORY
fi

if [ -z "$FILENAME" -a ! -f "$FILENAME" ]; then
    FILENAME="webdav.conf"
    echo "No file specified. Backing up webdav.conf"
fi

REV=0
BACKUP="$FILENAME.$DATE.$REV"

while [ -f $BACKUP ]; do
    let REV+=1
    BACKUP="$DIRECTORY$FILENAME.$DATE.$REV"
done

cp $FILENAME $BACKUP

echo $OUTPUT
OUTPUT=$(apache2ctl configtest 2>&1)
if [ "$OUTPUT" == "Syntax OK" ]; then
    echo "Syntax OK"
    echo "Performing restart"
    apachectl -k graceful 2>&1
fi

exit $?

這是這個文件的ls -l

-rwsrwxr-x 1 root user  645 2012-04-26 18:05 graceful-restart

當我嘗試運行此腳本時,我得到以下輸出:

No file specified. Backing up webdav.conf
ulimit: 88: error setting limit (Operation not permitted) Syntax OK

如果能夠執行我所描述的內容,我感興趣。

Linux不會尊重shell腳本上的suid位。 閱讀本文以獲取更多信息。

一個常見的解決方案是sudo命令。 /etc/sudoers有這樣的條目:

yourname ALL = NOPASSWD:/path/to/graceful-restart

你可以運行:

sudo /path/to/graceful-restart

這將使用root權限運行,而不會提示您輸入密碼。 有關sudoers文件語法的更多信息,請參見sudoers手冊頁。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM