如何从Bash脚本(以root或超级用户/sudo身份运行)检查sudoers文件,以确定用户是否可以sudo
我需要从bash脚本(使用根权限运行)中检查是否有其他用户有疑问,是否可以通过sudoers中的“username ALL=(ALL)NOPASSWD:ALL”将sudo作为dedicate权限执行 从相关用户运行的简单命令很容易返回1或0:如何从Bash脚本(以root或超级用户/sudo身份运行)检查sudoers文件,以确定用户是否可以sudo,bash,Bash,我需要从bash脚本(使用根权限运行)中检查是否有其他用户有疑问,是否可以通过sudoers中的“username ALL=(ALL)NOPASSWD:ALL”将sudo作为dedicate权限执行 从相关用户运行的简单命令很容易返回1或0: sudo -n uptime 2>&1|grep 'load'|wc -l 但是,如果我在脚本中更改用户,它总是返回为空: sudo -i -u username bash <<EOF CAN_I_RUN_SUDO="$(sud
sudo -n uptime 2>&1|grep 'load'|wc -l
但是,如果我在脚本中更改用户,它总是返回为空:
sudo -i -u username bash <<EOF
CAN_I_RUN_SUDO="$(sudo -n uptime 2>&1|grep 'load'|wc -l)"
echo "$CAN_I_RUN_SUDO"
whoami
EOF
sudo-i-u username bash您可以只检查sudo
的返回值,而不是对输出进行grepping:
if sudo -i -u username sudo -n uptime 2>&1; then
echo "I can run the Sudo command. No need to change sudoers"
else
echo "I can't run the Sudo command. Added to Sudoers."
echo "username ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
fi
如果可以的话,我的无关安全建议是避免自动将用户添加到sudoers文件。谢谢,但是您的示例有语法错误。它执行以下操作:sudo:update:command未找到我无法运行sudo命令。添加到Sudoers。sh:1:语法错误:“(“意外…另外命令'sudo-i-u username sudo-n update 2>&1'作为独立运行也无法通过“sudo:update:command not found”运行”.Ubuntu 18.04最新更新…@uzla,对不起,应该是正常运行时间
,而不是更新
。关于语法错误,我认为错误来自您自己的问题,因为我复制粘贴了那行,现在我看到它缺少一个引号。事实上,它可能没有缺少一个引号。我不清楚您为什么要传递它hsh
。只需使用echo“username ALL=(ALL)NOPASSWD:ALL”>/etc/sudoers
而不使用sh-c
if sudo -i -u username sudo -n uptime 2>&1; then
echo "I can run the Sudo command. No need to change sudoers"
else
echo "I can't run the Sudo command. Added to Sudoers."
echo "username ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
fi