使用语法: gpasswd [option] GROUP

一般选项:

 -a, --add USER                   #为组添加用户

 -d, --delete USER                #从组中一处用户

 -r, --remove-password            #移除组的密码

 -R, --restrict                   #限制访问组

 -M, --members USER,...           #设置组的成员

 -A, --administrators ADMIN,...    #为组指定管理员

gpasswd在不指定任务任何参数的情况下,是给组设置一个密码,我们很多时候不明白给这个组设置密码有什么用处,我们在什么情况下使用,下个给出一个使用环境的示例:

系统中有一个gid为500的组mygroup、一个gid为501的user1组和uid为501的用户

[root@desktop1 ~]# tail -2 /etc/group
mygroup:x:500:
user1:x:501:
[root@desktop1 ~]# tail -1 /etc/passwd
user1:x:500:501::/home/user1:/bin/bash

并且我们给组mygroup设置了密码

[root@desktop1 ~]# gpasswd mygroup
Changing the password for group mygroup
New Password:
Re-enter new password:

然后我们切换到user1用户,查看其组是user1

[user1@desktop1 ~]$ id
uid=500(user1) gid=501(user1) groups=501(user1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

在这个地方创建的文件属主和属组都是user1,如果我们需要创建一个属主是user1,但是属组是mygroup的文件呢?这里我们可以使用newgrp(用处:登陆一个新的组)命令临时切换到mygroup组上面,这个用户就具有了mygroup组的权限(当然这个地方也可以使用usermod把user1加入到mygroup组里面来实现这个需求),切换组的时候就需要组的密码了(如果组没有设置密码的话会报错)

[user1@desktop1 ~]$ id
uid=500(user1) gid=501(user1) groups=501(user1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[user1@desktop1 ~]$ touch test
[user1@desktop1 ~]$ ll
total 0
-rw-rw-r--. 1 user1 user1 0 Jan 11 03:27 test
[user1@desktop1 ~]$ newgrp mygroup
Password:
[user1@desktop1 ~]$ ll
total 0
-rw-rw-r--. 1 user1 user1 0 Jan 11 03:27 test
[user1@desktop1 ~]$ touch test1
[user1@desktop1 ~]$ ll   #两者属组不一样
total 0
-rw-rw-r--. 1 user1 user1   0 Jan 11 03:27 test  
-rw-r--r--. 1 user1 mygroup 0 Jan 11 03:28 test1