Linux 用户名中的一个点会导致:“用户名不在 sudoers 文件中。此事件将被报告。”

Linux 用户名中的一个点会导致:“用户名不在 sudoers 文件中。此事件将被报告。”

我有一个正常工作的 Debian 服务器。所有已被授予权限的现有用户都可以毫无问题地sudo使用。sudo但是,一个新用户的用户名具有尝试时会看到“用户名不在 sudoers 文件中。此事件将被报告” sudo

我没有看到该用户遗漏了任何步骤。这是我的步骤:

创建一个用户名中带有点的特权用户。我使用这个小脚本来添加开发人员用户帐户。

#!/bin/bash
uu=$1
useradd -m -G sudo,webdev -s /bin/bash $uu
passwd $uu
cd /home/$uu/
mkdir .ssh/
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
chmod 700 .ssh/
chown -R $uu:$uu .ssh/
ls -la .ssh/
cat $uu.pub > /home/$uu/.ssh/authorized_keys
echo "finished"

检查用户是否在 sudo 组中:

getent group sudo

这已经存在于/etc/sudoers

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

接下来我创建了 /etc/sudoers.d/user.name (并将权限设置为 640):

nano /etc/sudoers.d/user.name
user.name ALL=(ALL) NOPASSWD: ALL

要进行测试,请使用用户帐户登录并尝试sudo。我收到上述错误。

我能够解决此问题的一种方法是将此用户添加到具有 sudo 权限的不同组中。

要么是我遗漏了某些内容,要么是用户名中的点导致了其他用户名未遇到的问题。

答案1

解决方案在评论中给出穆鲁

sudo 将读取 /etc/sudoers.d 中的每个文件,跳过以“~”结尾或包含“.”的文件名特点 ...

正如 roaima 在另一条评论中指出的那样:

用户名中的点不会导致问题。这是因为您选择将 sudo 配置放在名称包含点的文件中。

这正是问题所在。我验证过的解决方案就是:

sudo mv /etc/sudoers.d/user.name /etc/sudoers.d/username

相关内容