2012-04-26 2 views
2

정상적인 재시작을 수행하고 루트 권한이나 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 

을 제가 설명했던 것을 수행 할 수 있다면 관심이 있습니다.

+0

sudo는 어떨까요? – Friek

답변

8

Linux는 쉘 스크립트의 suid 비트를 준수하지 않습니다. 자세한 내용은 this을 참조하십시오.

이에 대한 일반적인 해결책은 sudo 명령입니다. /etc/sudoers에서이 같은 항목으로 :

sudo /path/to/graceful-restart 

을 그리고 이것은 패스워드를 입력하지 않아도 루트 권한으로 실행됩니다 :

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

당신은 실행할 수 있습니다. sudoers 파일의 구문에 대한 자세한 내용은 sudoers 매뉴얼 페이지를 참조하십시오.

관련 문제