在了解了Linux系统中用户和组的基本知识后,今天介绍一下如何来管理用户和组。

一、用户的管理
 
1、useradd命令——创建用户
 
useradd命令用于添加用户账号,其基本的命令格式为:
useradd [选项 ] 用户名
例:按照默认值新建用户 user1
[root@localhost ~]# useradd user1
Linux系统中,useradd命令在添加用户账号的过程中会自动完成以下几项任务:
  • 在“/etc/passwd”文件和“etc/shadow”文件的末尾增加该用户账号的记录。
  • 若未指明用户的主目录,则在“/home”目录下自动创建与该用户账号同名的主目录,并在该目录中建立用户的初始配置文件。
  • 若未指明用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息保存在“etc/group”、“etc/gshadow”文件中。
在创建完用户 user1之后,大家可以分别查看/etc/passwd、/etc/shadow文件以及/home目录中新增加的信息。
 
useradd命令的常用选项:
 
1)-u选项:指定用户的UID,要求该UID号未被其他用户使用。
如果不使用 -u选项,那么普通用户的UID将是从500开始递增,使用-u选项则可以任意指定UID,甚至是500之前的UID,当然前提是这个UID并未被占用。对于普通用户,建议尽量还是使用500之后的UID,以免混乱。
例:创建名为 user2的用户账号,并将其UID指定为504。
[root@localhost ~]# useradd -u 504 user2
[root@localhost ~]# tail -1 /etc/passwd
user2:x:504:504::/home/user2:/bin/bash
 
2)-d选项:指定用户的主目录。
普通用户的主目录默认都存放在 /home目录下,通过-d选项可以指定到其它位置。
例:创建一个辅助的管理员账号 admin,将其主目录指定为/admin。
[root@localhost ~]# useradd -d /admin admin
此时,会在根目录下创建 admin用户的主目录:
[root@localhost ~]# ls /
admin boot etc    lib    lost+found misc net proc sbin     srv tmp var
bin     dev   home lib64 media       mnt   opt root selinux sys usr
在默认的 /home目录中将不再创建用户主目录:
[root@localhost ~]# ls /home
student user1 user2
 
3)-g选项:指定用户的基本组。
如果在创建用户时指定了基本组,那系统就不再创建与用户同名的用户组了。
例:创建一个用户 user4,指定其基本组为admin。
[root@localhost ~]# useradd -g admin user4
[root@localhost ~]# id user4
uid=506(user4) gid=505(admin) 组 =505(admin)
 
4)-G选项:指定用户的附属组。
例:创建一个用户 user5,指定其附加组为root。
[root@localhost ~]# useradd -G root user5
[root@localhost ~]# id user5
uid=507(user5) gid=507(user5) 组 =507(user5),0(root)
 
5)-e选项:指定用户账号的失效时间,可以使用yyyy-mm-dd的日期格式。
例:创建一个临时账号 temp01,指定属于users基本组,该账号于2013年1月30日失效。
[root@localhost ~]# useradd -g users -e 2013-01-30 temp01
 
6)-M选项:不建立用户主目录。
某些用户不需要登录系统,而只是用来使用某种系统服务,如 ftp用户,这类用户就可以不必创建主目录。
7)-s选项:指定用户的登录shell。
用户的默认 shell为/bin/bash,如果将shell指定为/sbin/nologin,那么该用户将禁止登录。
例:创建一个用户 FTP访问的用户账号ftpuser,禁止其登录,而且不为其创建主目录。
[root@localhost ~]# useradd -s /sbin/nologin -M ftpuser
 
上述所有选项都可以结合在一起使用,如:
创建一个用户 super,指定其基本组为admin,附加组为root,主目录为/super。
[root@localhost ~]# useradd -g admin -G root -d /super super
 
2、passwd命令——为用户账号设置密码
 
通过 useradd命令新添加的用户账号,还必须为其设置一个密码才能用来登录Linux系统。
例:为用户 user1设置密码。

 

我这里设置的密码为“123”,虽然系统提示密码无效,但其实这个密码仍然是设置成功了,因为最后出现了“所有的身份验证令牌已经成功更新”这个提示。

Linux系统对密码要求非常严格,要求密码应符合下列规则:

  •  密码不能与用户账号相同
  • 密码长度最好在8位以上
  • 密码最好不要使用字典里面出现的单词或一些相近的词汇,如Passw0rd等。
  • 密码最好要包含英文大小写、数字、符号这些字符。
当以 root用户的身份为普通用户设置密码时,密码即使不符合规则要求,也可以设置成功。但如果是普通用户修改自己的密码,则必须要符合规则要求。
在上面的操作中,因为我是用 root用户的身份为普通用户user1设置密码,此时无论设置什么密码都可以成功,但如果是user1用户为自己设置密码,那就必须得遵守规则了。所以对Linux中的普通用户,设置密码的确是一件比较头疼的事,像“RedHat2013”才是一个符合要求的密码。
用户账号具有可用的登录密码以后,就可以登录 Linux系统了。

passwd命令的相关选项:

1)-d选项,清空密码
例:清除用户 user1的密码。
[root@localhost ~]# passwd -d user1
用户的密码被清除之后,无需使用密码就可以实现在本地登录,但远程登录时始终是需要密码的。

2)-l选项,锁定用户账号
例:锁定用户 user2的账号。
[root@localhost ~]# passwd -l user2
此时使用 user2登录,将会被拒绝。

3)-u选项,解锁用户账号。
例:将用户账号 user2解锁。
[root@localhost ~]# passwd -u user2
解锁之后, user2就可以登录系统了。
 
3、userdel命令——删除用户账号
 
例:删除用户账号 user1。
[root@localhost ~]# userdel user1
user1的账号虽然被删除了,但是他的主目录仍然还在。
[root@localhost ~]# ls /home
admin temp01 user1 user2 user4 user5
一般情况下,普通用户只对自己的主目录拥有写权限,所以用户的相关文件一般也都是存放在主目录里。多数情况下,我们都希望在删除一个用户账号时,能将他的所有相关文件一并删除,这时就需要使用 -r选项,将用户账号连同主目录一起删除。
-r选项,删除用户时,将用户的主目录一并删除。
 [root@localhost ~]# userdel -r user3
[root@localhost ~]# ls /home
admin temp01  user1 user2 user4 user5 

4usermod命令——修改用户账号属性

 
对于系统中已经存在的用户账号,可以使用 usermod命令重新设置各种属性。
usermod命令的选项与 useradd命令基本相同。

1)-d选项,修改用户的主目录。
例:将 admin用户的主目录移动到/home目录下,并使用usermod命令做相应调整。
[root@localhost ~]# grep admin /etc/passwd      #查看 admin用户的主目录位置
admin:x:505:505::/admin:/bin/bash
[root@localhost ~]# mv /admin /home
[root@localhost ~]# ls /home
admin temp01 user1 user2 user4 user5
[root@localhost ~]# usermod -d /home/admin admin       #修改 admin的主目录
[root@localhost ~]# grep admin /etc/passwd             #再次查看主目录位置
admin:x:505:505::/home/admin:/bin/bash

2)-l选项,更改用户账号的名称。
例:将 admin用户的账号名改为master。
[root@localhost ~]# usermod -l master admin
[root@localhost ~]# grep “ master” /etc/passwd
master:x:505:505::/home/admin:/bin/bash

3)-g选项,更改用户的基本组。
例:将用户 master的基本组改为ftp。
[root@localhost ~]# usermod -g ftp master
[root@localhost ~]# id master
uid=509(master) gid=50(ftp) 组 =50(ftp)

4)-G选项,更改用户的附加组。
例:将用户 master的附加组改为root。
[root@localhost ~]# usermod -G root master
[root@localhost ~]# id master
uid=509(master) gid=50(ftp) 组 =50(ftp),0(root)
 

三、用户组管理

 用户组的管理相对于用户的管理就要简单得多了。
 
1 groupadd命令——添加组账号
 
[root@localhost ~]# groupadd class1
[root@localhost ~]# tail -1 /etc/group
class1:x:506:
使用 -g选项,可以指定GID号。
[root@localhost ~]# groupadd –g 1000 class2
[root@localhost ~]# tail -1 /etc/group
class2:x:1000:
 
2 groupdel命令——删除组账号
 
[root@localhost ~]# groupdel class1
 
3 gpasswd命令——添加、删除组成员
 
gpasswd命令本来是用于设置组账号的密码,但是该功能极少使用,实际上该命令更多地用来为指定组账号添加、删除用户成员,对应的选项分别为 -a、-d。
例:将用户 super加入到root组中。
[root@localhost ~]# gpasswd -a super root
Adding user super to group root
[root@localhost ~]# grep "^root" /etc/group
root:x:0:super
例:将用户 super从root组中删除。
[root@localhost ~]# gpasswd -d super root
Removing user super from group root
[root@localhost ~]# grep "^root" /etc/group
root:x:0:
 
4 groups命令——查询某个用户账号所属的组
 
例:分别查询当前用户( root)和super用户所属的组账号信息。
[root@localhost ~]# groups
root
[root@localhost ~]# groups super
super : super root
 
四、图形化的用户和组管理工具
 
利用 RHEL6图形桌面环境中的“系统/管理/用户和组群”工具来管理用户和组,相对就要简单得多了,对于初学者可以作为辅助管理手段,但是不要对其形成依赖性,毕竟命令才是根本。

这个图形工具大家可以自己去练练,具体用法我这里就不说了。