我维护一个bash脚本,该脚本在我运行它的任何服务器上执行系统检查。作为此检查的一部分,我需要确保名为的用户monapp
可以执行一些命令:
sudo /etc/rc.d/init.d/httpd restart
sudo /etc/rc.d/init.d/mysqld restart
...
但是,我需要能够以无权访问sudoers文件的用户身份运行它。我还需要弄清楚用户是否可以在不执行命令和解析输出的情况下运行这些命令(即,我不想在一堆系统上重新启动apache只是为了看看是否monapp
可以重新启动它)。
我研究过的所有解决方案都不满足上述要求,所以我有些迷茫。有人可以帮忙吗?
这就是我最终需要的。希望这对以后的人有所帮助。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句