在本教程中,说明如何将用户添加到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命令将打印当前登录用户的次要组信息。

idgroups之间的差别主要在于groups只打印用户次要组信息,而id命令则打印用户的主要组和次要组,当然还有用户uidgid

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。

如果您有任何疑问,请随时发表评论