JSRUN 用代码说话

newgrp 命令-切换用户组

编辑教程

newgrp 命令

newgrp 命令可以从用户的附加组中选择一个群组,作为用户新的初始组。

基本格式

[root@localhost ~]# newgrp 组名

具体用法和功能:

首先,建立 3 个用户组 group1、group2 和 group3,命令如下:

[root@localhost ~]# groupadd group1
[root@localhost ~]# groupadd group2
[root@localhost ~]# groupadd group3

示例

创建一个用户 user1,同时指定 user1 的初始组为 group1,附加组为 group2 和 group3,执行命令如下:

[root@localhost ~]# useradd -g group1 -G group2,group3 user1
#由于指定了初始组,因此不会在创建 user1 默认群组
[root@localhost ~]# more /etc/group | grep user1
group2:x:501:user1
group3:x:502:user1

对用户 user1 设置密码,执行命令如下:

[root@localhost ~]# passwd user1
Changing password for user user1.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

切换至 user1 用户

通过 newgrp 切换用户组进行下列操作,读者可从中体会出 newgrp 命令的作用。

#切换至 user1 用户
[root@localhost ~]# su - user1
[root@localhost ~]# whoami
user1
#使用 newgrp 命令一边切换 user1 的初始组,一边创建文件
[root@localhost ~]# mkdir user1_doc
[root@localhost ~]# newgrp group2
[root@localhost ~]# mkdir user2_doc
[root@localhost ~]# newgrp group3
[root@localhost ~]# mkdir user3_doc
#查看各文件的详细信息
[root@localhost ~]# ll
total 12
drwxr-xr-x 2 user1 group1 4096 Oct 24 01:18 user1_doc
drwxr-xr-x 2 user1 group2 4096 Oct 24 01:18 user2_doc
drwxr-xr-x 2 user1 group3 4096 Oct 24 01:19 user3_doc

使用 newgrp 命令通过切换附加组成为新的初始组,从而让用户获得使用各个附加组的权限。

newgrp命令的底层实现

其实,newgrp 命令每一次切换用户的初始组,该用户都会以另外一个 shell(新进程,也可以说是子进程)登陆,只不过在新 shell 上登陆的该用户,其初始组改变了而已。

通过添加 shell 内置命令 "echo $$" 就可以发现,每次使用 newgrp 命令,都会切换到一个新的进程。
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟