当我尝试时,sudo something
我得到:“ luke 不在 sudoers 文件中。此事件将被报告。”
所有 sudo 用户都会以同样的方式失败。
我怎样才能获得有关此处到底发生了什么故障的更多详细信息?这曾经工作得很好,但是其他具有 sudo 访问权限的人已经搞砸了(?),现在 sudo 不起作用(尽管我可以 su 到 root 并从那里很好地 sudo 。)
我检查了 /etc/sudoers (内容和权限都与我的默认安装匹配,visudo -c
报告一切正常)
我肯定还在 sudo 组中:
$ getent group sudo
sudo:x:27:luke,user2,user3
当我添加
luke ALL=(ALL:ALL) ALL
到 /etc/sudoers 它确实让我使用 sudo。但为什么 sudo 组的成员不能使用它呢?
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
sudo ALL=(ALL:ALL) ALL
luke ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
ubuntu 16.04 服务器版。
答案1
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
sudo ALL=(ALL:ALL) ALL
评论后一行管理员组成员可以获得root权限授予组成员 sudo 访问权限admin
,但后面的行允许组成员 sudo...从一开始就删除了该%
标志,因此它只授予 sudo 访问权限用户命名sudo
,而不是给团体同名。
答案2
最简单的事情就是添加用户luke
:
visudo
然后
luke ALL=(ALL:ALL) ALL
答案3
原因
sudo 损坏可能是由以下任一原因引起的:
sudo
不应将用户从或中删除admin group
。- 该
/etc/sudoers
文件已被更改,以防止用户使用命令将sudo
其admin group
权限提升到 root 的权限sudo
。 - 文件的权限
/etc/sudoers
未设置为0440
。
请按照以下步骤修复它。
- 打开终端窗口,
root
使用命令输入su root
- 输入
root password
- 输入命令
apt-get install sudo -y
进行安装sudo
sudoers file
通过输入adduser username
新用户或usermod -aG sudo username
现有用户来添加用户。将您的用户名替换为用户名。您可以将
usermod -aG sudo,adm username
其添加到 sudoers 和 admin groupt 中。sudoers file
通过输入设置正确的权限chmod 0440 /etc/sudoers
- 输入
exit
并按 Enter 键,直到关闭终端窗口。 - 完全关闭系统并重新启动。
- 打开另一个终端窗口。
尝试任何
sudo
命令来检查您的用户名是否已正确添加到 sudoers 文件中。例如sudo apt-get update
如果您的用户名已正确添加到 sudoers 列表中,那么您将不会收到错误。