用户管理命令
添加用户命令:useradd
添加新用户
语法
useradd [选项] 用户名
选项
- -u UID: 手工指定用户的UID号
- -d 家目录: 手工指定用户的家目录
- -c 用户说明: 手工指定用户的说明
- -g 组名: 手工指定用户的初始组
- -G 组名: 手工指定用户的附加组
- -s shell: 手工指定用户的登录shell,默认为/bin/bash
用户默认值文件
- /etc/default/useradd
GROUP=100 # 用户默认组
HOME=/home # 用户家目录
INACTIVE=-1 # 密码过期宽限天数(字段7)
EXPIRE= # 密码失效时间(字段8)
SHELL=/bin/bash # 默认shell
SKEL=/etc/skel # 模板目录
CREATE_MAIL_SPOOL=yes # 是否建立邮箱
- /etc/login.defs
PASS_MAX_DAYS 99999 # 密码有效期(字段5)
PASS_MIN_DAYS 0 # 密码修改时间间隔(字段4)
PASS_MIN_LEN 5 # 密码最小5位(PAM)
PASS_WARN_AGE 7 # 密码到期警告(字段6)
UID_MIN 1000 # 最大最小范围
UID_MAX 60000
ENCRYPT_METHOD SHA512 # 加密模式
范例
添加用户user1:useradd user1
设置用户密码命令:passwd
设置用户密码
语法
passwd [选项] [用户名(空代表当前用户)]
选项
- -S :查询用户密码的密码状态。仅root可用
- -l : 暂时锁定用户。 仅root用户可用
- -u : 解锁用户。仅root用户可用
- –stdin: 可以通过管道符输出的数据作为用户的密码
范例
# 修改user1密码:
passwd user1
# 查看密码状态
(base) [root@localhost etc]# passwd -S user1
user1 LK 2021-02-14 0 99999 7 -1 (Password locked.)
# 锁定与解锁用户
passwd -l user1 # 在密码串前面加了'!!'
passwd -u user1
# 管道输入作为用户密码(shell中使用)
echo '123456'| passwd --stdin user1
查看登录用户信息命令:w/who/whoami
查看登录用户信息
语法
who
范例
# 详细信息
(base) [root@localhost etc]# w
23:32:13 up 120 days, 19:45, 1 user, load average: 0.00, 0.02, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 222.129.57.246 15:15 5.00s 0.13s 0.13s -bash
(base) [root@localhost etc]# who
root pts/0 2021-02-15 14:47 (222.129.56.191)
# 格式:登录用户名 登录终端(tty本地终端,pts远程终端) 登录时间 IP地址
# 用户名
(base) [root@localhost etc]# whoami
root
修改用户信息命令:usermod
修改用户信息
语法
usermod [选项] 用户名
选项
- -u UID: 修改用户的UID号
- -c 用户说明: 修改用户的说明信息
- -G 组名: 修改用户的附加组
- -L: 临时锁定用户
- -U: 解锁用户锁定
范例
# 修改用户的说明
usermod -c "test user" lamp
#把lamp用户加入root组
usermod -G root lamp
修改用户密码状态命令:chage
修改用户密码状态
语法
chage [选项] 用户名
选项
- -l: 列出用户详细密码状态
- -d 日期: 修改密码最后一次更改日期(shadow字段3)
- -m 天数: 两次密码修改间隔(字段4)
- -M 天数: 密码有效期(字段5)
- -W 天数: 密码过期前警告天数(字段6)
- -I 天数: 密码过后宽限天数(字段7)
- -E 日期: 账号失效时间(字段8)
范例
# 这个命令其实是把密码修改日期归0了(shadow第3字段)
# 这样用户一登陆就要修改密码
chage -d 0 lamp
删除用户命令:userdel
删除用户,知道用于影响文件和目录的前提下,可以手工删除。
语法
userdel [-r] 用户名
选项
- -r 删除用户的同时删除用户家目录
范例
# 删除用户及其相关路径
userdel -r user1
查看用户ID命令 id
(base) [root@localhost etc]# id root
uid=0(root) gid=0(root) groups=0(root)
切换用户身份命令:su
语法
su [选项] 用户名
选项
-
- 代表连带用户的环境变量一起切换
- -c 命令: 仅执行一次命令而不切换身份
范例
# 切换成root用户
[lamp@localhost ~]$ su – root
# 不切换root,但是执行useradd 命令添加user3用户
[lamp@localhost ~]$ su - root -c "useradd user3"
扩展 uptime命令
- uptime:查看当前系统运行时间以及负载情况
# uptime
23:45:24 up 120 days, 19:59, 1 user, load average: 0.13, 0.04, 0.05
load average: 过去一分钟,五分钟,十五分钟的负载情况
用户配置文件
用户信息文件/etc/passwd
存放用户信息,7个字段
- 字段1:用户名称
- 字段2:密码标志
- 字段3:UID(用户ID)
- 0:超级用户,如果想把用户设置为超级用户,改此用户的UID为0即可。
- 1-999:系统用户
- 1000-65535:普通用户
- 字段4:GID(用户初始组ID)
- 初始组:只能有一个,创建用户时,自动创建同名初始组
- 附加组:可以有多个,根据需求添加
- 字段5:用户说明
- 字段6: 家目录
- 普通用户:/home/用户名/
- 超级用户:/root/
- 字段7:登录之后的shell
- /bin/bash
- /sbin/nologin
- /usr/bin/passwd
影子文件/etc/shadow
存放用户密码,9个字段
- 字段1:用户名
- 字段2:加密密码
- 加密算法为SHA512散列加密算法
- 如果密码位是“!!”或“*”,代表没有密码,不能登录
- 字段3:密码最后一次修改日期
- 使用1970-1-1作为标准时间,每过一天时间戳+1
- 字段4:两个密码的修改间隔时间(与字段3相比)
- 字段5:密码有效期(和字段3相比) 99999代表永久有效
- 字段6:密码修改到期前的警告天数(和字段5相比)
- 字段7:密码过期后的宽限天数(和字段5相比)
- 0/空:代表密码过期后立即失效
- -1:代表密码永远不会失效
- 字段8:账号失效时间
- 用时间戳表示
- 字段9:保留字段
知识点:时间戳换算方法(字段8)
- 时间戳换算为日期
date -d "1970-01-01 16066 days"
- 日期换算时间戳
echo $(($(date --date="2014/01/06" +%s)/86400+1))
组信息文件/etc/group
存放组相关信息,四个字段
- 字段1: 组名
- 字段2:组密码标志
- 字段3:GID
- 字段4:组中附加用户
组密码文件/etc/gshadow(一般不用)
存放组的密码信息,四个字段
- 字段1:组名
- 字段2:组密码
- 字段3:组管理员用户名
- 字段4:组中附加用户
扩展:四个文件操作权限
密码文件默认不可编辑,只能UID为0的用户可以操作。
用户管理相关文件
- 用户家目录
- 普通用户:/home/用户名 ,权限为700
- 超级用户:/root ,权限550。用户改为超级用户之后,家目录不变。
- 用户邮箱:
/var/spool/mail/用户名
- 用户模板目录:
/etc/skel
- 作用:创建用户时,会拷贝模板目录下面的所有文件到用户家目录。