Linux 中用户组相关操作
Linux 中具有相同角色的用户都会以组的形式来管理。如何将用户添加到组、从组中删除用户等,本篇介绍 Linux 中常用的用户组相关操作。所有命令以 root 身份运行。
查看 Linux 中的所有组和用户组
1 | cat /etc/group |
结果大致如下:
1 | jinzhongxu:x:1002: |
/etc/group
是 Linux 系统中组的配置文件,记录组的信息。除此之外,还有配置文件 /etc/gshadow
保存用户组口令。
每行含义:组名:口令:组标识:组内用户
从上面的结果可以看出,组 miniconda 中包含两个用户,分别是 root, jinzhongxu。同时,组 jinzhongxu 的组内用户为空,其实,同名用户一般不列出。查看用户所属组的方法如下:
1 | id jinzhongxu |
结果:
1 | uid=1002(jinzhongxu) gid=1002(jinzhongxu) groups=1002(jinzhongxu),27(sudo),1003(miniconda) |
或
1 | groups jinzhongxu |
结果:
1 | jinzhongxu : jinzhongxu sudo miniconda |
创建组和删除组
1 | # 创建组 |
创建用户时分配组
这里创建新用户 jinzhongxu,-m
表示同时创建用户的登录主目录,即用户的家目录,一般为 /home/jinzhongxu
,-g science
表示并把该用户添加到 science 组。如果不指定用户组,则将默认创建与用户名同名的用户组。
1 | useradd -m -g science jinzhongxu |
删除用户
使用如下命令能够同时删除用户、用户所有文件,如果添加用户是同时添加了用户同名组,则也会删除该组:
1 | userdel -r jinzhongxu |
把用户添加到组
将用户 jinzhongxu 添加(追加 append)到组 science 中:
1 | usermod -a -G science jinzhongxu |
切换用户组
把用户的第一个组切换到新组,第一个组可以通过上面查看用户组信息获取,第一个用户组就是。切换用户 jinzhongxu 的第一个组到 sudo 的方法如下:
1 | usermod -g sudo jinzhongxu |
只保留用户到一个或指定的用户组
如果一个用户被分配到很多个组,想要只保留一个或指定的组或者删除多余的组,可以使用如下的方法:
1 | # 只保留用户 jinzhongxu 到组 science |
只删除指定的组
如果想要把用户 jinzhongxu 从一个组 science 中删除,可以使用如下的方法:
1 | gpasswd -d jinzhongxu science |
注意:当用户只属于一个组的时候,是无法删除组的。因为所有用户必须属于一个组
修改配置文件 /etc/group 从组中删除用户
因为用户组中的用户信息记录在配置文件 /etc/group
中,因此,我们可以通过手动修改该文件删除某个组中的用户,方法就是使用文本编辑工具 vim
,删除某一行用户组中后面的需要删除的用户名即可。但,需要重新启动方可生效。
群组管理员
1 | # 关于系统管理员(root)做的动作: |
创建一个新群组,名称为 science 且群组交由 jinzhongxu 管理:
1 | groupadd testgroup # 先创建群组 |
这样,用户 jinzhongxu 就有管理用户组 science 的权限了。可以执行从组 science 中添加和删除用户的操作。
1 | # 把用户 xjz 添加到群组 science |
1 | # 如果用户在多个群组中,那么默认群组就是有效群组,创建新文件等都是以有效群组设定权限 |
更多
查看更多关于用户或用户组操作可以查看帮助信息
1 | man usermod |