Linux基础-Linux系统用户管理简介

Linux系统用户管理

  1. 用户管理 *****
  2. Linux用户命令 ****
  3. 用户创建的原理 ***
  4. 密码管理 ***
  5. 组命令管理 **
  6. 身份切换 *****
  7. sudo提升权限 *****

我们现在所使用的操作系统都是多用户操作系统
AAA认证体系
认证 Authentication
授权 Authorization
统计 Accounting

用户和组存在的意义

  1. 系统上的每一个进程(运行的程序)都需要特定的用户运行
  2. 每一个文件都有特定的用户拥有
  3. 访问文件或目录受到用户的限制
  4. 进程能够以何种方式访问某一个文件或目录,与进程所关联的用户有关

用户uid的分类
[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@localhost ~]#

-- 取值范围0-65535
0 --超级管理员
1-200 --系统用户,由系统分配给系统进程使用
201-999 --系统用户,用来运行服务账户,不需要登录系统(动态分配)
1000+ --常规用户

注意:
在Linux7之前的惯例是,UID1-499用于系统用户,而500+则用于普通用户

组类别

  1. 基本组 --优先使用基本组,用户只能属于一个基本组,用户默认基本组
  2. 附加组 --基本组不能满足授权要求,创建附加组,用户可以属于多个附加组
  3. 私有组 --私有组,创建用户时如果没有指定基本组,系统会创建和用户同名的组

账户信息存放在/etc/passwd;账户密码信息存放在/etc/shadow.这两个文件是Linux系统中最重要的文件之一
如果没有这两个文件或者这两个文件出问题,会导致无法正常登陆Linux系统

  1. 查看/etc/passwd账户文件
    [root@localhost ~]# head -1 /etc/passwd
    root❌0:0:root:/root:/bin/bash
    [root@localhost ~]#

/etc/passwd中的账户信息由":"分割成7个字段,每个字段的具体含义如下:
显示内容 字段名称 注释说明
root 用户名称 用户的账户名称
x 密码占位符 存放账户的口令,暂用x表示,密码保存在/etc/shadow中
0 用户的UID 用户识别号
0 用户的基本组ID 组标识号
root 用户注释 用户详细信息
/root 用户家目录 用户家目录,root家目录是/root,普通用户的家目录存放在/home/username,可自定义
/bin/bash 用户登录shell 用户登录linux使用的shell,使用cat /etc/shells查看

  1. 查看/etc/shadow账户密码文件
    [root@localhost ~]# head -1 /etc/shadow
    root:$6$mp4/FiKIq0Mh40oE$CY3rwls4ln.kPjO8gENI5lhfbrNpTBfv9sLt2jR/G7yENVnUFc76Rj5yQG660yZOQGg0r2OdVTlsfhUe50vrS/::0:99999:7:::
    [root@localhost ~]#

/etc/shadow中的账户密码信息由":"分割成9个字段,每个字段的具体含义如下:

  1. 用户登录名 --用户的账户名称
  2. 加密后的密码 --用户密码,这是加密过的口令(未设密码时为!!)
    --加密后密码又分为三个部分,被"$"符号隔开
    --加密算法
    --盐(随机值)
    --加密后的值
  3. 最近一次密码更改的时间 --从1970年1月1日到最近一次更改密码时间之间过了多少天
  4. 密码最少使用几天 --密码最少使用几天才可以更改密码(0表示无限制)
  5. 密码最长使用几天 --密码使用多少天需要修改密码(默认99999表示永不过期)
  6. 密码到期前警告期限 --密码过期前多少天提醒用户更改密码(默认过期提前7天警告)
  7. 密码过期后保持活跃的天数 --在此期限内,用户依然可以登录系统并更改密码,指定天数过后,账户被锁定
  8. 账户到期时间 --从1970年1月1日起,账户在这个日期前可使用.到期后失效
  9. 标志 --保留

  1. 使用chage更改用户密码,密码使用情况.参数如下
    [root@localhost ~]# chage --help
    用法:chage [选项] 登录

选项:
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
-h, --help 显示此帮助信息并推出
-I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
-l, --list 显示帐户年龄信息
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”
-R, --root CHROOT_DIR chroot 到的目录
-W, --warndays 警告天数 将过期警告天数设为“警告天数”

[root@localhost ~]#

修改时间为2014年8月31日,和图中时间匹配,方便后续验证
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$mrV5PdCS$i.q.50A1AMaqXTs9FvXq6wzQEcS9BJzxzPnh/GdhrFIXYKrYJii11a2Q/4OiO.XLXEPEqOV5mZX/9kh/fJQ9X1:17970:0:99999:7:::
[root@localhost ~]# date
2019年 03月 16日 星期六 19:51:20 CST
[root@localhost ~]# date -s 20140831
2014年 08月 31日 星期日 00:00:00 CST
[root@localhost ~]# echo 666 | passwd --stdin test2
更改用户 test2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$5ZkIfv0G$M.Iptr6UPrk7Ljb4aFY6Ti/2uNxW6//901ugAWh3VLzyCg92mQLC1PwnJ8nMMZnSpkUR/CN6EZ7JNRSqD2ltP1:16312:0:99999:7:::
[root@localhost ~]#

设置最近一次修改密码时间
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$5ZkIfv0G$M.Iptr6UPrk7Ljb4aFY6Ti/2uNxW6//901ugAWh3VLzyCg92mQLC1PwnJ8nMMZnSpkUR/CN6EZ7JNRSqD2ltP1:16312:0:99999:7:::
[root@localhost ~]# chage -d '20140901' test2
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$5ZkIfv0G$M.Iptr6UPrk7Ljb4aFY6Ti/2uNxW6//901ugAWh3VLzyCg92mQLC1PwnJ8nMMZnSpkUR/CN6EZ7JNRSqD2ltP1:20140901:0:99999:7:::
[root@localhost ~]# chage -d '2014-09-01' test2
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$5ZkIfv0G$M.Iptr6UPrk7Ljb4aFY6Ti/2uNxW6//901ugAWh3VLzyCg92mQLC1PwnJ8nMMZnSpkUR/CN6EZ7JNRSqD2ltP1:16314:0:99999:7:::
[root@localhost ~]#

[root@bogon ~]# chage -d 0 oldboy
//账户有效期内,登录立即强制提示修改密码
[test@bogon ~]$ su - oldboy
Password:
You are required to change your password immediately (root enforced)
Changing password for oldboy.
(current) UNIX password:
New password:

设置最短使用密码时间
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$5ZkIfv0G$M.Iptr6UPrk7Ljb4aFY6Ti/2uNxW6//901ugAWh3VLzyCg92mQLC1PwnJ8nMMZnSpkUR/CN6EZ7JNRSqD2ltP1:16314:0:99999:7:::
[root@localhost ~]# chage -m 2 test2
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$5ZkIfv0G$M.Iptr6UPrk7Ljb4aFY6Ti/2uNxW6//901ugAWh3VLzyCg92mQLC1PwnJ8nMMZnSpkUR/CN6EZ7JNRSqD2ltP1:16314:2:99999:7:::
[root@localhost ~]#

[root@localhost ~]# su - test2
[test2@localhost ~]$ passwd
Changing password for user test2.
Changing password for test2.
(current) UNIX password:
New password:
BAD PASSWORD: The password is too similar to the old one
New password:
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[test2@localhost ~]$ passwd
Changing password for user test2.
Changing password for test2.
(current) UNIX password:
You must wait longer to change your password
passwd: Authentication token manipulation error
[test2@localhost ~]$

设置密码最长使用时间
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$4XsyuIIP$CzlE19y1zOPEHxlYMSuDJqDkLZ1akcNdlcbaFJmdX5Byc2lsfpqtPO68ccZcjy8Gzrd6H4rTcaRictmZCtnC7.:16312:2:99999:7:::
[root@localhost ~]# chage -M 15 test2
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$4XsyuIIP$CzlE19y1zOPEHxlYMSuDJqDkLZ1akcNdlcbaFJmdX5Byc2lsfpqtPO68ccZcjy8Gzrd6H4rTcaRictmZCtnC7.:16312:2:15:7:::
[root@localhost ~]#

设置密码警告时间
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$4XsyuIIP$CzlE19y1zOPEHxlYMSuDJqDkLZ1akcNdlcbaFJmdX5Byc2lsfpqtPO68ccZcjy8Gzrd6H4rTcaRictmZCtnC7.:16312:2:15:7:::
[root@localhost ~]# chage -W 6 test2
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$4XsyuIIP$CzlE19y1zOPEHxlYMSuDJqDkLZ1akcNdlcbaFJmdX5Byc2lsfpqtPO68ccZcjy8Gzrd6H4rTcaRictmZCtnC7.:16312:2:15:6:::
[root@localhost ~]#

设置密码过期时间
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$4XsyuIIP$CzlE19y1zOPEHxlYMSuDJqDkLZ1akcNdlcbaFJmdX5Byc2lsfpqtPO68ccZcjy8Gzrd6H4rTcaRictmZCtnC7.:16312:2:15:6:::
[root@localhost ~]# chage -I 5 test2
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$4XsyuIIP$CzlE19y1zOPEHxlYMSuDJqDkLZ1akcNdlcbaFJmdX5Byc2lsfpqtPO68ccZcjy8Gzrd6H4rTcaRictmZCtnC7.:16312:2:15:6:5::
[root@localhost ~]#

设置用户过期时间
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$4XsyuIIP$CzlE19y1zOPEHxlYMSuDJqDkLZ1akcNdlcbaFJmdX5Byc2lsfpqtPO68ccZcjy8Gzrd6H4rTcaRictmZCtnC7.:16312:2:15:6:5::
[root@localhost ~]# chage -E "2015-8-31" test2
[root@localhost ~]# tail -1 /etc/shadow
test2:$6$4XsyuIIP$CzlE19y1zOPEHxlYMSuDJqDkLZ1akcNdlcbaFJmdX5Byc2lsfpqtPO68ccZcjy8Gzrd6H4rTcaRictmZCtnC7.:16312:2:15:6:5:16678:
[root@localhost ~]#

查看账户age信息
[root@localhost ~]# chage -l test2
Last password change : Aug 30, 2014
Password expires : Sep 14, 2014
Password inactive : Sep 19, 2014
Account expires : Aug 31, 2015
Minimum number of days between password change : 2
Maximum number of days between password change : 15
Number of days of warning before password expires : 6
[root@localhost ~]# !LA
LANG=zh_CN.UTF-8
[root@localhost ~]# chage -l test2
最近一次密码修改时间 :8月 30, 2014
密码过期时间 :9月 14, 2014
密码失效时间 :9月 19, 2014
帐户过期时间 :8月 31, 2015
两次改变密码之间相距的最小天数 :2
两次改变密码之间相距的最大天数 :15
在密码过期之前警告的天数 :6
[root@localhost ~]#

如何验证,只调整时间为如下进行验证:

  1. 验证普通用户是否能修改密码,不需要调整时间
  2. 普通用户登录系统,会提示警告密码还有多少天过期
    [root@localhost ~]# date -s '20140912'
    2014年 09月 12日 星期五 00:00:00 CST
    [root@localhost ~]#

[test@localhost ~]$ su - test2
Password:
Warning: your password will expire in 3 days
Last login: Sun Aug 31 00:21:47 CST 2014 on pts/0
[test2@localhost ~]$

  1. 普通用户登录系统,强制要求修改密码
    [root@localhost ~]# date -s '20140918'
    2014年 09月 18日 星期四 00:00:00 CST
    [root@localhost ~]#

[test@localhost ~]$ su - test2
Password:
You are required to change your password immediately (password aged)
Changing password for test2.
(current) UNIX password:

  1. 普通用户登录系统后,提示账户已过期
    [root@localhost ~]# date -s '20140923'
    2014年 09月 23日 星期二 00:00:00 CST
    [root@localhost ~]#

[test@localhost ~]$ su - test2
Password:
Your account has expired; please contact your system administrator
su: Authentication token expired
[test@localhost ~]$

posted on 2019-11-22 18:08  旗木卡卡祥  阅读(535)  评论(0编辑  收藏  举报