我正在尝试执行一些第三方安装程序脚本 (ansible tower setup.sh),该脚本需要以 root 身份或通过 sudo 启动,因为某些命令依赖于 root 权限。然而,一些脚本执行期间尝试使用 sudo 命令。不要问我为什么,我认为安装脚本是共同努力的结果,但存在一些不一致之处……
因此脚本失败了,我可以重现它。每次尝试以 root 身份发出 sudo 时,我都会遇到这个奇怪的错误,例如
root@machine:/home/someuser: sudo echo 1
root is not allowed to run sudo on <FQDN here>. This incident will be reported.
在我之前使用 Ubuntu 的过程中我从未见过这样的事情(公平地说,目前在 Google 上也没有见过)。
由于无法找到所有位置并将脚本转换为不调用 sudo,因此我必须找到一种方法让 root 用户能够执行 sudo。我正在使用的 Ubuntu 16.04 服务器由公司的私有云提供商在域内以一种奇特的方式配置(我不知道这是否重要)。
我的 /etc/sudoers 如下所示:
#
# This file MUST be edited with the 'visudo' command as root.
# more bla bla
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
+unixadmin,+unixadminext ALL= NOPASSWD: ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
关于 sudo:
root@machine:/home/someuser# which sudo
/usr/bin/sudo
root@machine:/home/someuser# ll /usr/bin/sudo
-rwsr-xr-x 1 root root 140816 Jun 7 2017 /usr/bin/sudo*
我错过了什么?
我将 root 用户添加到 sudo 组,但问题并未解决。
答案1
以 root 身份运行groups
- Root 不在 sudo 组中,因为为什么它需要这样呢?
至于如何修复它,您可以将 root 添加到 sudo 组,或者您可以在运行 sudo 的任何脚本中进行检查(您已经排除了这种可能性,因为它可以解决您的特定问题,但它可能是其他问题的解决方案。
要将 root 添加到 sudo 组:
(以 root 身份)usermod -a -G sudo root