Sudo 用户不在 sudo 组中?

Sudo 用户不在 sudo 组中?

添加用户时如下:

sudo adduser someuser --ingroup sudo

添加的用户可以使用sudo,但他不在/etc/groupsudo 中,也不在/etc/sudoers
那么它如何工作?

答案1

您的adduser命令设置用户的初级组sudo

man adduser

   By  default,  each  user  in  Debian GNU/Linux is given a corresponding
   group with the same name.       [ ... ]                  Users' primary
   groups  can  also be overridden from the command line with the --gid or
   --ingroup options to set the group by id or name, respectively. 

   [ ... ]  

   --ingroup GROUP
          Add the new user to GROUP instead of a usergroup or the  default
          group  defined  by  USERS_GID  in  the configuration file.  This
          affects the users primary group.  To add additional groups,  see
          the add_extra_groups option

主要组通常具有与用户相同的名称和 ID。它不是存储在 中,/etc/group而是存储在 中/etc/passwd,如下所示:

bytecommander:x:1000:1000:ByteCommander,,,:/home/bytecommander:/bin/bash

第 4 个:分隔字段包含用户主要组的 GID(组 ID)。

现在/etc/group包含所有组的列表并将该组作为附加组(非主要组)的用户关联起来,如下所示:

sudo:x:27:bytecommander

在命令的输出中也可以看到主要组和附加组之间的区别id(由我格式化):

$ id
uid=1000(bytecommander) 
gid=1000(bytecommander) 
groups=1000(bytecommander),27(sudo)

对于使用 来说,重要的sudo是组中的成员身份sudo,它不区分主要和次要成员身份。 负责的配置行可以在 中找到,/etc/sudoers如下所示:

%sudo   ALL=(ALL:ALL) ALL

此行sudo自动授予组内所有成员以任何用户身份运行任何命令的全部权限,而无需手动指定每个用户。

答案2

更改/添加所添加用户的主要组的--ingroup选项,并且用户的主要组以数字 GID 的形式adduser存储在文件中/etc/passwd,在单独的第四个字段中。:

因此sudo读取/etc/passwd文件并发现用户someuser具有主要组sudo,因此sudo命令运行正常。

现在,/etc/groupsudo群组条目仍然不会显示成员资格,因为/etc/group仅存储次要群组成员资格,而不是主要群组成员资格。

相关内容