添加用户时如下:
sudo adduser someuser --ingroup sudo
添加的用户可以使用sudo
,但他不在/etc/group
sudo 中,也不在/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/group
的sudo
群组条目仍然不会显示成员资格,因为/etc/group
仅存储次要群组成员资格,而不是主要群组成员资格。