用户管理主要是通过修改用户配置文件完成的
使用用户管理控制工具的最终目的也是为了修改用户配置文件
每一位用户的UID值都是唯一的
一、用户分类
用户的角色是通过UID来识别的,而不是用户名
Linux系统三大类用户:root用户、系统用户、普通用户
1)root用户
root用户UID为0,权限最高的
2)系统用户
又成虚拟用户、伪用户或假用户,不具有登录Linux系统的能力,但却是系统运行不可缺少的用户
CentOS6:1~499
CentOS7:1~999
3)普通用户
能登录Linux系统,使用的权限有限,由管理创建
CentOS6:500~60000
CentOS7:1000~60000
假设用户以zhangsan登录系统时,系统首先会检查/etc/passwd文件,看是否有zhangsan这个账户,然后确定用户zhangsan的UID,通过UID来确认用户的身边,如果存在则读取/etc/shadow文件中所对应的密码。如果密码核实无误则登录系统,读取用户的配置文件。
二、用户相关配置文件
1、/etc/passwd文件
Linux系统中所有的用户都会记录在该文件中
任何用户都可以查看,但只有root用户可以修改
[[email protected] home]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
… ...
各字段的含义:
用户名:密码:UID:GID:用户描述:用户家目录:用户登录shell类型
UID最大值可以在/etc/login.defs文件中查看:
[[email protected] ~]$ cat /etc/login.defs |grep UID_MAX
UID_MAX 60000
2、/etc/shadow文件
这个文件只有root可以查看和操作
[[email protected] ~]# cat /etc/shadow
root:$6$w/WqR.C7Cduh.vVn$40kMrg9DVS1mrkcYHysMS9x6.RQ3JKLulL4e4VTzKsqpw9Ie8x.O15FGDejIo9SLMSaXfaNqE/vmg9JElQhHl/:17012:0:99999:7:::
bin:*:17012:0:99999:7:::
daemon:*:17012:0:99999:7:::
adm:*:17012:0:99999:7:::
… …
各字段的含义:
用户名:加密密码:用户最后一次更改密码的日期:密码允许更换前的天数:密码需要更换的天数:密码更换前警告的天数:账户被取消激活前的天数:用户账户过期日期:保留字段
三、管理用户账户
在Linux系统中,可以使用图形的管理工具和字符命令进行管理。
[[email protected] ~]# rpm -ivh/media/Packages/system-config-users-1.3.5-2.el7.noarch.rpm --nodeps
warning:/media/Packages/system-config-users-1.3.5-2.el7.noarch.rpm: Header V3RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... #################################[100%]
Updating / installing...
1:system-config-users-1.3.5-2.el7 ################################# [100%]
system-config-users是一块图形下的用户管理工具,可以可视化环境对用户和组进行管理。
1、创建用户账户
当创建一个新账户时,为新账户分配用户UID、组群、主目录和登录Shell等资源。
新创建的用户默认被锁定,无法使用,需使用passwd设置密码后才能使用。
创建新用户就是向/etc/passwd中增加一条用户记录,同时更新/etc/shadow和/etc/grouop文件。
adduser是useradd的软链接文件,两者具有一样的功能,都可以创建新账号。
命令语法:
useradd [选项] [用户名]
-d:指定用户的主目录
-e:设置账户的有效期限
-f:设置在密码过期后多少天即关闭该账户
-c:设置用户账户的描述信息
-g:指定用户的基本组
-G:指定用户的附加组
-m:创建家目录
-M:不建立家目录
-r:指定创建系统用户
-s:用户登录Shell类型
-u:指定用户UID
创建zhangsan用户,UID为1010,主目录/testdir/zhangsan,所属组为root,登录Shell为/bin/csh
[[email protected] ~]# useradd -u 1010 -d/testdir/zhangsan -g root -s /bin/csh zhangsan
创建完成后,使用getent命令进行查看
[[email protected] ~]# getent passwd zhangsan
zhangsan:x:1010:0::/testdir/zhangsan:/bin/csh
[[email protected] ~]# getent shadow zhangsan
zhangsan:!!:17015:0:99999:7:::
zhangsan用户没有创建密码,密码显示”!!”,表示不可登录系统
[[email protected] ~]# echo centos | passwd--stdin zhangsan
Changing password for user zhangsan.
passwd: all authentication tokens updatedsuccessfully.
[[email protected] ~]# getent shadow zhangsan
zhangsan:$6$7WWjhBJh$U49xRBtBL3njImeriHeOp2HaBtyjuviZ.OqimtGHgjjWa0NYQxeG2hFXMxWNbzE6dt1RPsvlqgfMfCk3.D3PM.:17015:0:99999:7:::
2、修改用户账户
usermod可以更改用户的Shell类型、所属的组群、密码有限期,还能更改用户的登录名
命令语法:
usermod [选项] [用户名]
-G:修改用户的附加组
-l:修改用户账户的名称
-L:锁定用户密码,使密码失效
-s:修改用户登录Shell
-U:解除密码锁定
-u:修改用户UID
-c:修改用户描述信息
-d:修改用户主目录
-e:修改账户有效期限
-f:修改在密码过期后多少天即关闭账户
-g:修改用户基本组
-o:允许使用重复的UID
-m:移动主目录的内容到新的位置
将zhangsan用户的主目录由之前的/home/zhangsan改为/home/wang,并将登录名称改为wang。
[[email protected] ~]# ls /home/
centos cyh xiaoming zhangsan
[[email protected] ~]# cat /etc/passwd | grepzhangsan
zhangsan:x:1003:1003::/home/zhangsan:/bin/bash
[[email protected] ~]# usermod -d /home/wang-m -l wang zhangsan
[[email protected] ~]# getent passwd wang
wang:x:1003:1003::/home/wang:/bin/bash
[[email protected] ~]# ls /home/
centos cyh wang xiaoming
修改用户wang账户的过期日期是2017年12月30日,在密码过期后15天就禁用该账户。
[[email protected] ~]# getent shadow wang
wang:!!:17015:0:99999:7:::
[[email protected] ~]# usermod -e 12/30/2017-f 15 wang
[[email protected] ~]# getent shadow wang
wang:!!:17015:0:99999:7:15:17530:
3、删除用户账户
删除Linux系统中的用户账户
命令语法
userdel [选项] [用户名]
-r:在删除用户时,把用户的主目录和本地邮件存储的目录或文件一起删除
-f:强制删除用户账户
删除wang的用户账户,并保留wang用户主目录及其内容
[[email protected] ~]# userdel wang
[[email protected] ~]# cat /etc/passwd | grep wang
[[email protected] ~]# ls /home/
centos cyh wang xiaoming
在实际工作中,当删除用户时,因为需要很可能要保留某个用户的主目录及其下面重要的数据(当要连同主目录一同删除时,需要对用户目录下的重要内容进行备份,以避免不必要的损失)