【问题标题】:Restarting apache without being superuser在没有超级用户的情况下重新启动 apache
【发布时间】:2012-05-07 08:32:54
【问题描述】:

是否有可能在没有 root 或 root 权限的情况下执行优雅重启并检查 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

如果可以执行我所描述的,我很感兴趣。

【问题讨论】:

    标签: linux apache bash permissions apache2


    【解决方案1】:

    Linux 不会支持 shell 脚本上的 suid 位。阅读this了解更多信息。

    一个常见的解决方案是sudo 命令。在/etc/sudoers 中有这样的条目:

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

    你可以跑:

    sudo /path/to/graceful-restart
    

    这将在不提示您输入密码的情况下以 root 权限运行。有关sudoers 文件语法的更多信息,请参见sudoers 手册页。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      相关资源
      最近更新 更多