一.添加、切换、删除用户组命令groupadd/newgrp/groupdel
1.groupadd命令
用来新建一个用户组。语法格式为:
groupadd [-g -o] gid  group
各个选项具体含义如下:
-g:指定新建用户组的GID号,该GID号必须唯一,不能和其它用户组的GID号重复。
-o:一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
例如:
创建一个linuxfans的用户组和一个fanslinux用户组,GID分别为1020和1030
[root@localhost ~]# groupadd -g 1020 linuxfans
[root@localhost ~]# groupadd -g 1030 fanslinux
[root@localhost ~]# more /etc/group|grep  linuxfans
linuxfans:x:1020:
[root@localhost ~]# more /etc/group|grep  fanslinux
fanslinux:x:1030:
2.newgrp命令
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限,newgrp主要用于在多个用户组之间进行切换,语法格式为:
newgrp <用户组>
 例子:下面通过实例讲述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
[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 UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
下面是切换到user1用户下,通过newgrp切换用户组进行的一系列操作,从中可以看出newgrp的作用。
[root@localhost ~]# su - user1
[user1@localhost ~]$ whoami
user1
[user1@localhost ~]$ mkdir user1_doc
[user1@localhost ~]$ newgrp group2
[user1@localhost ~]$ mkdir user2_doc
[user1@localhost ~]$ newgrp group3
[user1@localhost ~]$ mkdir user3_doc
[user1@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
[user1@localhost ~]$
3.groupdel命令
表示删除用户组,语法格式为:
groupdel [群组名称]
当需要从系统上删除用户组时,可用groupdel指令来完成这项工作。如果该用户组中仍包括某些用户,则必须先删除这些用户后,然后才能删除用户组。
例如:删除linuxfans这个用户组
[root@localhost ~]# groupdel  linuxfans
二. 添加、修改和删除用户命令useradd/usermod/userdel
1.useradd建立用户的过程
useradd不加任何参数创建用户时,系统首先读取添加用户配置文件/etc/login.defs和/etc/default/useradd,根据这两个配置文件中定义的规则添加用户,然后会向/etc/passwd和/etc/group文件添加用户和用户组记录,同时/etc/passwd和/etc/group对应的加密文件也会自动生成记录,接着系统会自动在/etc/default/useradd文件设定的目录下建立用户主目录,最后复制/etc/skel目录中的所有文件到新用户的主目录中,这样一个新的用户就建立完成了。
2.useradd的使用语法
useradd语法的一般格式为:
useradd  [-u uid [-o]] [-g group] [-G group,...]
                [-d home] [-s shell] [-c comment]
                [-f inactive] [-e expire ] name
各个选项具体含义如下:
 -u uid:即用户标识号,此标识号必须唯一。
 -g group:指定新建用户登录时所属的默认组,或者叫主组。此群组必须已经存在。
 -G group:指定新建用户的附加组,此群组必须已经存在。附加组是相对与主组而言的,当一个用户同时是多个组中的成员时,登录时的默认组成为主组,而其它组称为附加组。
 -d home:指定新建用户的默认主目录,如果不指定,系统会在/etc/default/useradd文件指定的目录下创建用户主目录。
 -s shell:指定新建用户使用的默认shell,如果不指定,系统以/etc/default/useradd文件中定义的shell作为新建用户的默认shell。
 -c comment:对新建用户的说明信息。
 -f inactive:指定帐号过期多长时间后永久停用。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能,预设值为-1
 -e expire:指定用户的帐号过期时间,日期的指定格式为MM/DD/YY。
 name:指定需要创建的用户名。
3.usermod的使用语法
 usermod用来修改用户的账户属性信息,使用语法如下:
usermod  [-u uid [-o]] [-g group] [-G group,...]
                [-d 主目录 [-m]] [-s shell] [-c 注释] [-l 新名称]
                [-f 失效日期] [-e 过期日期][-L|-U] Name
各个选项具体含义如下:
 -u uid:指定用户新的UID值,此值必须为唯一的ID值,除非用-o选项。
 -g group:修改用户所属的组名为新的用户组名,此用户组名必须已经存在。
 -G group:修改用户所属的附加组。
 -d 主目录:修改用户登录时的主目录。
 -s shell:修改用户登录系统后默认使用的shell
 -c 注释:修改用户的注释信息。
 -l 新名称:修改用户帐号为新的名称。
 -f 失效日:帐号过期多少天后永久禁用。
 -e 过期日:增加或修改用户账户的过期时间。
 -L:锁定用户密码,使密码无效。
 -U:解除密码锁定。
 Name:要修改属性的系统用户。
4.userdel的使用语法
Userdel用来删除一个用户,若指定“-r”参数不但删除用户,同时删除用户的主目录以及目录下的所有文件。语法格式为:
userdel [-r][用户帐号]
5.应用举例
1)添加一个用户mylinux,指定所属的主用户组为fanslinux,附加用户组为linuxfans,同时指定用户的默认主目录为/opt/mylinux
[root@localhost ~]# useradd -g fanslinux -G linuxfans -d /opt/mylinux mylinux
[root@localhost ~]# more /etc/passwd|grep mylinux
mylinux:x:523:1030::/opt/mylinux:/bin/bash
[root@localhost ~]# more /etc/group|grep mylinux
linuxfans:x:1020:mylinux
 2)添加一个用户test_user,指定UID为686,默认的shell为/bin/csh,让其归属为用户组linuxfans和fanslinux,同时添加对此用户的描述,
[root@localhost ~]# useradd  -u 686 -s /bin/csh  -G linuxfans,fanslinux  -c "This is test user" test_user
[root@localhost ~]# more /etc/passwd|grep test_user
test_user:x:686:686:This is test user:/home/test_user:/bin/csh
[root@localhost ~]# more /etc/group|grep test_user 
fanslinux:x:1030:test_user
linuxfans:x:1020:mylinux,test_user
test_user:x:686:
 3)修改用户test_user的主用户组为新建的组test_group1,同时修改test_user的附加组为linuxfans和root,最后修改test_user的默认登录shell为/bin/bash
[root@localhost ~]# groupadd test_group1  #添加一个新的用户组
[root@localhost ~]# more /etc/group|grep test_group1 #显示新增用户组的信息
test_group1:x:1031:
[root@localhost ~]# usermod -g test_group1 -G linuxfans,root -s /bin/bash test_user
[root@localhost ~]# more /etc/passwd|grep test_user   #从输出可知,用户的属性已经更改                                       
test_user:x:686:1031:This is test user:/home/test_user:/bin/bash
[root@localhost ~]# more /etc/group|grep test_user   #从输出可知,用户组的属性也同步更改  
root:x:0:root,test_user
linuxfans:x:1020:mylinux,test_user
test_user:x:686:
4)如何锁定、解除用户密码
下面首先对test_user和mylinux用户设置密码
[root@localhost ~]# passwd  test_user
Changing password for user test_user.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd  mylinux
Changing password for user mylinux.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
下面的操作是通过su命令切换到mylinux用户下,然后在mylinux下再次切换到test_user用户下,这里的切换用户是为了说明一个问题:从超级用户root切换到普通用户下,是不需要输入普通用户密码的,系统也不会去验证密码。但普通用户之间切换是需要密码验证的。
[root@localhost ~]# su – mylinux  #通过su命令切换到mylinux用户下
[mylinux@localhost ~]$ whoami      #用whoami命令查看当前用户
mylinux
[mylinux@localhost ~]$ su - test_user  #这里是从mylinux用户下切换到test_user用户下,需要输入密码
Password:
[mylinux@localhost ~]$ whoami          #成功切换到test_user用户下
test_user
接下来,在root用户下执行usermod锁定test_user的密码,测试test_user是否还能登录,从下面可以看出,密码锁定后,出现登录失败。
[root@localhost ~]# usermod -L test_user  #锁定test_user用户的密码
[root@localhost ~]# su - mylinux 
[mylinux@localhost ~]$ whoami
mylinux
[mylinux@localhost ~]$ su - test_user  #这里输入的密码是正确的,但是提示密码错误,因为密码被锁定了
Password:
su: incorrect password
[mylinux@localhost ~]$ whoami
mylinux
最后对test_user解除密码锁定,登录正常。
[root@localhost ~]# usermod -U test_user  #解除密码锁定
[root@localhost ~]# su – mylinux
[mylinux@localhost ~]$ whoami
mylinux
[mylinux@localhost ~]$ su - test_user
Password:
[test_user@localhost ~]$ whoami  #密码锁定解除后,test_user用户可以登录系统
test_user