繁体   English   中英

有没有我可以以非root用户身份运行的命令,以查看用户是否可以运行某些sudo命令

[英]Is there a command I can run as a non-root user to see if a user can run a certain sudo command

我维护一个bash脚本,该脚本在我运行它的任何服务器上执行系统检查。 作为此检查的一部分,我需要确保名为monapp的用户可以执行一些命令:

sudo /etc/rc.d/init.d/httpd restart

sudo /etc/rc.d/init.d/mysqld restart

...

但是,我需要能够以无权访问sudoers文件的用户身份运行它。 我还需要弄清楚用户是否可以在不执行命令和解析输出的情况下运行这些命令(即,我不想在一堆系统上重新启动apache,只是为了查看monapp可以重新启动它)。

我研究过的所有解决方案都不满足上述要求,所以我有点迷茫。 有人可以帮忙吗?

sudo -u theuser bash -c '[ -x /etc/rc.d/init.d/httpd ] && echo "OK" || echo "NOT"'

-X

检查文件是否具有执行权限(针对运行测试的用户)

然后我们以目标用户(theuser)的身份运行此命令

这就是我最终需要的。 希望这对以后的人有所帮助。

sudolist="$(sudo -l)"

declare -a commands=("/etc/rc.d/init.d/mysqld stop" "/etc/rc.d/init.d/mysqld start" 
                     "/etc/rc.d/init.d/mysqld restart" "/etc/rc.d/init.d/httpd stop" 
                     "/etc/rc.d/init.d/httpd start" "/etc/rc.d/init.d/httpd restart"
                     "/etc/rc.d/init.d/memcached stop" "/etc/rc.d/init.d/memcached start" 
                     "/etc/rc.d/init.d/memcached restart")

for i in "${commands[@]}"
do

    if [ ! -z "$(echo $sudolist | grep "$i")" ]; then
        echo -e "\tPASS: user can run '$i'"
    else
        echo -e "\tFAIL: user cannot run '$i'"
    fi
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM