5.1 用户管理重要文件的解释

5.1.1 用户标识符
  • 用户:UID
  • 组:GID(逻辑容器:包含用户,实现集中授权)
  • 用户分类
    • 管理员用户:root UID:0
    • 普通用户: 1000-65535
    • 程序(系统)用户:1-999
  • 组分类
    1.第一种分类方式(按照用户分类):
    • 管理员组:root
    • 基本组:Linux创建新用户时,如果没有指定隶属的组,则系统为用户建立一个同名的用户组
    • 附加组:一个用户可以有多个附加组(有效组)

2.第二种分类:

  • 管理员组:root
  • 普通用户组:
  • 系统用户组:

5.1.2 UID/GID解析
  • 识别思路:字符—>解析—>UID/GID
  • /etc/passwd:存储用户基本信息
  • /etc/shadow:存储用户的影子口令
  • /etc/group:存储组的用户信息

5.1.3 /etc/passwd 解释
  • 第一列:用户名(name)
  • 第二列:加密密码(x表示密码占位符,密码保存在/etc/shadow中)
  • 第三列:UID
  • 第四列:GID
  • 第五列:描述信息
  • 第六列:用户的宿主目录
  • 第七列:用户默认使用的shell(/etc/shell)

5.1.4 /etc/shadow 解释
  • 第一列:用户的登录名
  • 第二列:用户加密后的密码
  • 第三列:最后一次更改密码的时间(时间戳)
  • 第四列:密码不可以修改的天数
  • 第五列:密码需要重新修改的天数
  • 第六列:密码需要修改前的警告天数
  • 第七列:密码过期后账号宽限时间
  • 第八列:账号失效日期
  • 第九列:保留 (暂时没用)

5.1.5 /etc/shadow 密码区域解释

三部分组成:用$隔开(格式:$id$salt$encrypted)

  • 第一部分:加密算法
    • 1:md5加密
    • 5:SHA-256加密
    • 6:SHA—512加密
  • 第二部分:随机序列号(salt)
  • 第三部分:随机序列号和设置密码共同加密后的字符串

5.1.6 /etc/group 解释
  • 第一列:组名字
  • 第二列:组的密码区域
  • 第三列:组的id号(GID)
  • 第四列:组的成员(不显示初始化成员)

5.1.7 /etc/gshadow 解释
  • 第一列:组的名字
  • 第二列:组的密码
  • 第三列:组的管理员
  • 第四列:组的成员列表

5.2 重要的文件

5.2.1 /etc/useradd目录(只对新用户有效):
  1. # useradd defaults file //注释行
  2. GROUP=100 //可以创建普通组
  3. HOME=/home //普通用户宿主目录(在home下生成和用户同名的目录)
  4. INACTIVE=-1 //是否启用用户过期停止使用权(若为数字,则代表过期宽限时间,-1代表不启用)
  5. EXPIRE= //设定过期时间
  6. SHELL=/bin/bash //设定用户默认使用的shell
  7. SKEL=/etc/skel //新用户宿主目录模板目录
  8. CREATE_MAIL_SPOOL=yes //是否为用户启用邮件通知

5.1.2 /etc/skel 目录(用户宿主目录模板目录,只对新建用户生效):
  • 新用户的目录下必须有这三个文件
  • .bash_logout:用户注销时执行的命令
  • .bash_profile:用户登录系统时执行的命令(用户变量)
  • .bashrc:用户登录一个新shell时执行的命令

5.1.3 /etc/login.defs 文件解释:(只对新建用户生效)
- MAIL_DIR                                     /var/spool/mail
- PASS_MAX_DAYS            99999            //密码最长使用时间
- PASS_MIN_DAYS            0                //密码最短使用时间,0代表不受限制
- PASS_MIN_LEN             5                //密码最小长度
- PASS_WARN_AGE            7                //密码过期警告时间
- UID_MIN                  1000             //普通用户最小UID号
- UID_MAX                  60000            //普通用户最大UID号
- SYS_UID_MIN              201              //系统用户最小的UID
- SYS_UID_MAX              999              //系统用户最大的UID 
- GID_MIN                  1000             //普通组最小GID
- GID_MAX                  60000            //普通组最大UID号
- SYS_GID_MIN              201              //系统组最小的UID
- SYS_GID_MAX              999              //系统组最大的UID 
- CREATE_HOME              YES              //是否创建宿主目录
- UMASK                    077              //关于权限的反掩码
- USERGROUPS_ENAB          YES              //删除用户时是否删除组
- ENCRYPY_METHOD           SHA512           //用户密码的加密方式

5.3 用户管理命令

5.3.1 useradd:添加新用户(更改/etc/passwd、/etc/group、/etc/shadow)
  • 语法:useradd [options] user_name
  • -c:新建用户时,为用户添加描述信息
  • -d:指定用户的宿主目录
  • -D:查看和修改默认配置(修改/etc/default/useradd文件中的默认值)
    • -g:修改默认的组
    • -b:修改默认宿主目录
    • -f:修改过期是否停用
    • -e:修改过期时间
    • -s:修改默认shell
  • -e:新建用户时,设置过期时间(格式:YYYY-MM-DD)
  • -g:指定用户的基本组(没有该选项时,Linux会建立一个同名组作为用户的基本组)
  • -G:新建用户时,指定用户的附加组,附加组可以有多个
  • -m:创建宿主目录(必须与 -k 一起使用)
  • -M:创建用户时,不为用户创建宿主目录
  • -p:创建用户时,为用户设置加密的密码(不推荐使用)
  • -r:创建系统用户
  • -s:指定默认的shell(系统支持的shell)
  • -u:指定用户的UID
  • 手动添加用户需要
    • 1.将数据写入/etc/passwd、/etc/shadow、/etc/group
    • 2.在/home/下建立相应文件夹
    • 3.将/etc/skel/下的文件复制到/home/用户 / 文件夹下

5.3.2 passwd :为用户设置密码、锁定解锁用户、查看用户状态
  • 语法:passwd [options] user_name
  • passwd user_name :直接设置密码
  • -l:锁定用户(暂时无法登陆)
  • -u:解锁用户
  • -S:查看用户状态,显示/etc/shadow文件中各个字段的内容
  • —stdin:标准输入,经常在shell脚本编程中为用户自动设置密码
  • -d:删除用户密码,允许普通用户以空密码登陆,仅root用户可以使用
  • -e:快速设置密码过期(用户再次登录时需要修改密码)
  • -n:设置密码最小使用期限
  • -x:设置密码最大使用期限
  • -w:设置密码过期前的警告时间
  • -i:修改密码过期后的宽限时间
  • 普通用户设置密码时,先验证当前密码,并且要求符合密码规范
  • root用户设置密码时,不需要验证密码,并且可以不符合密码规范

5.3.3 userdel:删除用户(passwd、shadow、group都修改删除)
  • 语法:userdel [options] user_name
  • -r :删除用户时,连同用户的宿主目录一块删除(如果不加,则不删除)

5.3.4 usermod :修改用户属性(root可以通过vim进行修改)
  • 语法:usermod [options] user_name
  • -c:更改用户的描述信息
  • -d:更改用户的宿主目录
  • -e:更改用户的过期时间
  • -f:修改/etc/shadow中第七列的内容
  • -g:修改用户的基本组
  • -G:修改用户的附加组
  • -l: 更改用户的登录名(重命名、不修改宿主目录)
  • -s:修改用户的shell
  • -L:锁定用户
  • -U:解锁用户

5.3.5 chsh :修改用户的shell
  • 语法:chsh [options] user_name
  • -s:后面跟shell,更改用户的shell
  • -l:显示系统当前支持的shell
  • 在/etc/目录下添加 nologin.txt 文件,则可以进行提示

5.3.6 finger :显示用户的基本信息(需要安装)
  • 语法:finger [options] user_name
  • -s、-l、

5.3.7 chfn :修改用户的基本信息
  • 语法:chfn [options] user_name
  • -o:修改办公室
  • -p:修改办公室电话
  • -h:修改家庭电话

5.3.8 id:显示用户和组的ID号
  • 语法:id [options] user_name
  • -a:忽略其他版本的区别
  • -Z:显示安全上下文的内容(内核)
  • -g: 显示有效组号
  • -G:显示所有组号(基本组、附加组)
  • -n:显示名字(与ugG连用)
  • -u :显示id

5.3.9 chage:修改用户密码的时间信息
  • 语法: chage [options] user_name
  • -l :列出用户的详细的密码参数
  • -d:修改/etc/shadow第三列的内容(后面日期格式:YYYY-MM-DD)
  • -E:修改/etc/shadow中第八列的信息,后面跟日期
  • -I:修改/etc/shadow中第七列的内容,后面跟天数
  • -m:修改/etc/shadow中第四列的内容,后面跟天数
  • -M:修改/etc/shadow中第五列的内容,后面跟天数
  • -w:修改/etc/shadow中第六列的内容,后面跟天数

5.4 组管理命令

5.4.1 groupadd:创建组
  • -g:指定组的id
  • -r:创建系统组

5.4.2 groupdel:删除组
  • 默认情况下不能删除用户的基本组,可以通过修改用户的基本组后删除组,可以删除用户的同时系统删除基本组(该组是一个用户的基本组)

5.4.3 groupmod :修改组的属性
  • -g:修改组的id号
  • -n:重命名

5.4.4 gpasswd:为组设置密码、管理员、添加成员
  • -A:设置组管理员
  • -M:批量添加成员
  • -r:移除组的密码
  • -R:让组的密码失效
  • -a:为组添加成员(组管理员的命令)
  • -d:删除组成员(组管理员的命令)

5.4.5 newgrp:为用户修改有效组(只在当前shell生效)
  • exit:退出newgroup

5.4.5 groupmems:为组添加成员,显示组成员列表