用户和组的概念和命令: useradd,userdel,groupadd,groupdel,groups,newgrp

作者:jicanmeng

时间:2016年06月05日


  1. useradd: 新建一个帐号
  2. userdel: 删除一个帐号
  3. groupadd: 新建一个群组
  4. groupdel: 删除一个群组
  5. groups: 查看本帐号所属群组
  6. newgrp: 有效群组的切换

1. useradd: 新建一个帐号

[jicanmeng@andy tmp]$ useradd -m -d /home/abc -s /bin/bash abc
                    bash: /usr/sbin/useradd: Permission denied
                [jicanmeng@andy tmp]$ su root
                    Password:
                [root@andy tmp]# useradd -m -d /home/abc -s /bin/bash abc
                [root@andy tmp]# cat /etc/passwd | grep abc
                    abc:x:501:501::/home/abc:/bin/bash
                [root@andy tmp]#

-m表示强制建立家目录;-d指定家目录;-s表示次帐号使用的shell。

2. userdel: 删除一个帐号

[root@andy tmp]# userdel -r abc
                [root@andy tmp]# cat /etc/passwd | grep abc
                [root@andy tmp]#

-r表示连家目录一起删除。

3. groupadd: 新建一个群组

[root@andy tmp]# groupadd abcd
                [root@andy tmp]# cat /etc/group | grep abcd
                    abcd:x:501:
                [root@andy tmp]#

有一点需要注意,新建一个帐号的时候,往往也会新建一个群组,名称和帐号的名称相同

4. groupdel: 删除一个群组

[jicanmeng@andy tmp]$ groupdel abcd
                [jicanmeng@andy tmp]$ cat /etc/group | grep abcd
                [jicanmeng@andy tmp]#

上面提到,新建一个帐号的时候,往往也会新建一个群组,名称和帐号的名称相同。在删除这个帐号的时候,也往往会同时删除对应的群组。如果我们不删除这个帐号,只是删除这个帐号对应的群组,是不会成功的。例子如下:

[root@andy tmp]# useradd -m -d /home/abc -s /bin/bash abc
                [root@andy tmp]# groupdel abc
                    groupdel: cannot remove the primary group of user 'abc'
                [root@andy tmp]# userdel -r abc
                [root@andy tmp]# groupdel abc
                    groupdel: group 'abc' does not exist
                [root@andy tmp]#

5. groups: 查看本帐号所属群组

[jicanmeng@andy tmp]$ groups
                    jicanmeng vboxusers
                [jicanmeng@andy tmp]$ groupdel jicanmeng
                    jicanmeng : jicanmeng vboxusers
                [jicanmeng@andy tmp]$ groups jicanmeng bin
                    jicanmeng : jicanmeng vboxusers
                    bin : bin daemon sys
                [jicanmeng@andy tmp]$

groups命令不接参数时,输出的是当前用户所属的全部群组。其中第一个群组是有效群组。在创建文件时,文件的群组就是有效群组。groups命令接参数时,输出的是参数中指定的用户所属的全部群组。

6. newgrp: 有效群组的切换

[jicanmeng@andy tmp]$ groups
                    jicanmeng vboxusers
                [jicanmeng@andy tmp]$ echo $$
                    3279
                [jicanmeng@andy tmp]$ newgrp vboxusers
                [jicanmeng@andy tmp]$ groups
                    vboxusers jicanmeng
                [jicanmeng@andy tmp]$ echo $$
                    4101
                [jicanmeng@andy tmp]$ exit
                [jicanmeng@andy tmp]$ echo $$
                    3279
                [jicanmeng@andy tmp]$

参考资料

  1. 鸟哥的linux私房菜
    http://vbird.dic.ksu.edu.tw/linux_basic/0410accountmanager.php