用户管理概述
-
通过对用户的合理管理,让用户更好的管理系统,通常用户分为以下三类:
- 超级用户:可调用系统内所有资源
- 系统用户:不可登录,用特定权限运行特定程序(限定权限)
- 普通用户:普通管理员,只能管理和本用户相关的信息
-
UID:用户唯一标识符
UID 范围 | |||
---|---|---|---|
用户级别 | CentOS6.* | CentOS7.* | 备注 |
超级用户 | root(0) | root(0) | |
系统用户 | 1-499 | 1-999 | nfsnobody(65534)系统用户 |
普通用户 | 500-65535 | 1000-65535 |
- 组分类
组本身没有类型,但根据该组所对应的用户进行类型的确认- 初始组(私有组)
- 附加组(公共组)
- 有效组(创建的文件时该文件的属组则是该用户当前的有效组)
相关配置文件
-rw-r--r-- 1 root root 1531 2018-07-17 13:42:53 /etc/passwd 用户信息配置文件
第一列:用户名
第二列:密码占位符(x)
第三列:UID
第四列:GID(用户初始组)
第五列:用户描述信息(可不写)
第六列:用户家目录(用户存放自己文件的位置)
第七列:登录shell类型(shell 命令解析器 /bin/bash,/sbin/nologin)
---------- 1 root root 1123 2018-07-17 13:42:53 /etc/shadow 密码配置文件
第一列:用户名
第二列:加密密码(SHA512散列模式加密。若为空,则仅限本地无密码登录,'*'或'!!'代表无密码)
第三列:密码最近修改时间 1970.01.01(Unix元年)
第四列:密码最短有效期 密码最少要使用的时间,期间不可修改密码
第五列:密码最长有效期 99999
第六列:密码到期前的警告天数
第七列:密码到期后的宽限天数
第八列:密码到期的时间(具体的某一时间点) 1970.01.01(Unix元年)
第九列:保留
-rw-r--r-- 1 root root 716 2018-07-17 13:42:53 /etc/group 组信息配置文件
第一列:组名
第二列:密码占位符(x)
第三列:GID
第四列:组成员列表
---------- 1 root root 563 2019-07-17 13:42:53 /etc/gshadow 组密码配置文件
第一列:组名
第二列:组密码
第三列:组管理员
第四列:组成员列表
注:一般二、三列不设,保证最小权限,保证安全
两个位置文件的权限/etc/shadow & /etc/gshadow
在CentOS 6.* 系列中密码文件的权限 000 ----------
在CentOS 6.* 之前的操作系统中权限 400 -r--------
创建用户
- 私有组机制
在创建用户前,先创建和用户名同名的组,将同名组作为该用户的初始组 - 公共组机制
先创建一个组(如GID=100),以后创建的所有用户都用GID:100组作为初始组
# 新用户信息生成时参考配置文件
-rw-r--r--. 1 root root 119 Nov 5 2016 /etc/default/useradd
-rw-r--r--. 1 root root 2028 Nov 5 2016 /etc/login.defs
# 新用户创建时模板文件目录
drwxr-xr-x. 2 root root 4096 Sep 5 19:31 /etc/skel/
相关命令
1. 创建用户
Usage: useradd [options] LOGIN
useradd -D
useradd -D [options]
Options:
-b, --base-dir BASE_DIR 新账户的主目录的基目录,(需事先创建,指定缺省值/home)
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的主目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 创建用户时不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户,一般和-s 结合使用
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
注:
有效组定义:用户创建文件或目录时使用哪个组作为文件的所属组,就是有效组。
初始组、附加组:是用户和组之间的关系
有效组:用户和文件之间的关系
天数转日期:date -d "1970-01-01 19527 days"
日期转天数:echo $(($(date --date="2020/01/01" +%s )/86400+1))
更改密码
Usage: passwd [OPTION...] <accountName>
-k, --keep-tokens 保持身份验证令牌不过期
-d, --delete 删除已命名帐号的密码(只有根用户才能进行此操作)
-l, --lock 锁定指名帐户的密码(仅限 root 用户)
-u, --unlock 解锁指名账户的密码(仅限 root 用户)
-e, --expire 终止指名帐户的密码(仅限 root 用户)
-f, --force 强制执行操作
-x, --maximum=DAYS 密码的最长有效时限(只有根用户才能进行此操作)
-n, --minimum=DAYS 密码的最短有效时限(只有根用户才能进行此操作)
-w, --warning=DAYS 在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
-i, --inactive=DAYS 当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
-S, --status 报告已命名帐号的密码状态(只有根用户才能进行此操作)(是否被锁定)
--stdin 从标准输入读取令牌(只有根用户才能进行此操作)
Example:
echo "123456" | passwd --stdin username
编辑用户信息
Usage: usermod [options] LOGIN
Options:
-c, --comment COMMENT GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,并不从其它组中删除此用户
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号
-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射
Example:
usermod -m -d /home/u4 user4(用户user4的原家目录是/home/user4)
删除用户
Usage: userdel [options] LOGIN
Options:
-f, --force 强制一些失败的操作
-h, --help 显示此帮助信息并推出
-r, --remove 删除主目录和邮件池(连带家目录一起删除)
-R, --root CHROOT_DIR chroot 到的目录
-Z, --selinux-user 为用户删除所有的 SELinux 用户映射
组操作命令
Usage: gpasswd [option] GROUP
Options:
-a, --add USER 向指定组内添加一个成员
-d, --delete USER 把指定用户从组内删除
-Q, --root CHROOT_DIR 要 chroot 进的目录
-r, --delete-password remove the GROUP's password
-R, --restrict 向其成员限制访问组 GROUP
-M, --members USER,... 设置组 GROUP 的成员列表
-A, --administrators ADMIN,... 设置组的管理员列表
除非使用 -A 或 -M 选项,不能结合使用这些选项。
其他命令
id USER 显示用户的UID、初始组、附加组列表
su USER 切换用户身份
su - USER 切换用户身份,连带环境变量一起切换
newgrp GROUP 修改用户的有效组,切换到普通用户之后,执行命令
chage -d 0 USER 设置密码有效期为0天,登录即修改
常用操作
# 创建组,创建用户使用这个组
groupadd -g 2000 server && useradd -u 2000 -g 2000 server
# 把dev用户添加到root组
[root@centos7 ~]# gpasswd -a dev root
# 切换用户的有效组,即dev用户创建的文件属组为root
[dev@centos7 ~]$ newgrp root
[dev@centos7 ~]$ touch file1
[dev@centos7 ~]$ ls -l
-rw-rw-r-- 1 dev root 0 2020-02-27 16:27:08 file1
# 查看用户的 UID、初始组、附加组列表
[dev@centos7 ~]$ id
uid=1001(dev) gid=0(root) groups=0(root),1001(dev)