• 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 ~]$

  • 相关阅读:
    aws 计费查询
    关于网络抖动
    word2vec和onehot
    缺少了目标的教育是彻底的失败
    做事要风险控制
    SPS中计算值公式函数简介
    Moss + InfoPath 表单工作流开发要点
    【译】What is the NDK? (2)
    【译】What is the NDK? (1)
    【译】Android平台上的Flex开发(3) 在桌面和移动设备上测试
  • 原文地址:https://www.cnblogs.com/s-sx/p/11913198.html
Copyright © 2020-2023  润新知