在本教程中,说明如何将用户添加到Linux 组。还将向您展示如何从组中删除用户以及如何创建,删除和列出所有组。
Linux组是一个单位,用于在Linux 组织和管理用户,组的主要目的是定义一组权限,例如读取,写入或执行并在用户之间共享权限。
在Linux有两种类型的组,分别是主要组和次要组。为了能够修改用户组,您需要以root具有sudo权限的用户登录。
主要组,当用户创建文件时,文件的组将设置为用户的主要组。通常,主要组的名称与用户的名称相同,用户主要组的信息存储在文件/etc/passwd
。
次要组,当您要将用户加入到指定组时,通常的建议,将用户添加到次要组。每个用户可以属于一个主要组和零个或多个次要组。
加入组
你可使用usermod
命令的-aG
选项,后跟组名称,将用户加入到指定组。运行成功时usermod
命令不会显示任何输出。仅当用户或组不存在时,它才会警告您。
-G
选项表示将用户加入到指定次要组,-a
选项表示将用户添加到指定组时,使用追加方式。
如果省略-a
选项,则将从未列出的组删除用户,用户也将会离开自己主要组。因此我们建议添加用户到指定次要组时,始终使用usermod
的-aG
选项。
例如命令sudo usermod -aG docker $USER
,将当前用户用户加入docker
组,$USER
环境变量表示当前登录用户。
当前登录的用户将从docker组继承权限,现在你可以在不使用sudo命令运行docker。
sudo usermod -aG docker $USER
如果要在一个命令中将用户加入多个次要组,可以使用逗号分隔的组的名称,用户将会加入到多个次要组。
例如,要将用户myfreax
加入到sudo,group1,group2组,请运行命令sudo usermod -aG sudo,group1,group2 myfreax
。
另外值得注意的是,在命令最后指定用户时,用户的前面请不要使用逗号,
分隔。myfreax
用户名是没有逗号的。
sudo usermod -aG sudo,group1,group2 myfreax
除了使用usermod
将用户添加指定次要组,你还可以使用useradd
命令创建用户的同时指定要加入的组。
例如命令sudo useradd -g users -G wheel,developers myfreax
将会创建用户myfreax
并加入主要组users
,次要组是developers,wheel组。
sudo useradd -g users -G wheel,developers myfreax
查看用户所属组
现在我们已经了解如何加入组,现在我们来看看如何验证用户是否加入指定的组。
要打印完整的用户信息,包括用户所属组,请使用id
命令,后跟用户名。如果省略用户名,id
命令将打印当前登录用户的信息。
除了使用id
命令之外,你还可以使用groups
命令打印用户的次要组,与id
命令一样。如果省略用户名,groups
命令将打印当前登录用户的次要组信息。
id
和groups
之间的差别主要在于groups
只打印用户次要组信息,而id
命令则打印用户的主要组和次要组,当然还有用户uid
和gid
。
id myfreax
groups myfreax
uid=1000(myfreax) gid=100(users) groups=100(users),10(wheel),95(storage),98(power),990(libvirt),993(docker),999(kvm)
创建组/删除用户
在Linux创建组的命令是groupadd
后跟组名,删除组的命令groupdel
后跟组名,从组删除用户的命令是gpasswd
。
如果你需要更改用户主要组,请使用usermod
命令后跟-g
选项。在以下示例中,我们将用户myfreax
的主要组更改为developers
。
sudo groupadd groupname #创建组
sudo usermod -g developers myfreax #修改myfreax用户的主要是developers
sudo groupdel groupname #删除组
sudo gpasswd -d myfreax sudo #从sudo组删除myfreax用户
结论
至此,你学习了如何将用户添加到组。相同的命令适用于任何Linux发行版,包括Ubuntu,CentOS,RHEL,Debian和Linux Mint。
如果您有任何疑问,请随时发表评论