2012-04-26 11 views
2

グレースフルリスタートを実行し、root権限やroot権限を持たないapache config構文をチェックする可能性はありますか?スーパーユーザーではなくApacheを再起動する

私はすでに、再起動するスクリプトに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 

私は」私が説明したことを実行することができれば興味があります。

+0

sudoはどうですか? – Friek

答えて

8

Linuxはシェルスクリプトのsuidビットを尊重しません。詳細については、thisをお読みください。

一般的な解決策は、sudoコマンドです。 /etc/sudoersで、このようなエントリで:

sudo /path/to/graceful-restart 

をそして、これはパスワードの入力を求められることなくroot権限で実行します:

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

あなたが実行することができます。 sudoersファイルの構文の詳細については、sudoersのマニュアルページを参照してください。

関連する問題