用户管理
用户管理:管理系统中用户(添加、删除和修改)
- Linux不支持匿名登录(必须通过已存在的用户访问系统)
- 系统服务默认以用户身份运行,但不可登录(Shell为/sbin/nologin)
常用命令
(1)添加用户
useradd命令:创建用户
指令格式:useradd 选项 用户名
选项 | 含义 |
---|---|
-u | 指定用户的UID (若不指定,默认为1000开始后未使用) |
-g | 指定用户的初始组 (可通过用户组GID和组名指定) |
-G | 指定用户的附加组 (可通过用户组GID和组名指定) |
-c | 注释信息 |
-s | 指定用户的Shell解释器 (默认为/bin/bash) |
-d | 指定用户的家目录 (默认在/home下创建用户同名目录) |
-m | 创建用户家目录 (常搭配-d选项创建自定义家目录) |
-r | 创建系统用户 (运行系统服务,不允许登录且无家目录) |
-M | 不创建用户家目录 |
-n | 不创建用户同名的用户组 |
-e | 指定用户到期时间 (格式为:YYYY-MM-DD) |
- 用户可属于多个组,但有且仅有一个初始组(其他组只能为附加组)
- useradd命令创建用户时会参考以下3个文件:/etc/default/useradd、/etc/login.defs、/etc/skel
例1:查看/etc/defalut/useradd文件
字段 | 说明 |
---|---|
GROUP | 默认用户组 (CentOS不采用该设置) |
HOME | 用户家目录的基准目录 |
INACTIVE | 密码过期后是否失效 (0代表立刻失效,-1代表永不失效) |
EXPIRE | 账号的失效日期 |
SHELL | 默认Shell解释器 |
SKEL | 创建用户家目录的参考目录 |
CREATE_MAIL_SPOOL | 是否建立用户的mailbox |
例2:查看/etc/skel和/etc/login.defs文件
(2)删除用户
userdel命令:删除用户
指令格式:userdel 选项 用户名
选项 | 含义 |
---|---|
-r | 同时删除用户的家目录 (默认保留) |
-f | 强制删除 |
- 若用户已登录,则userdel命令会执行失败(可通过kill/killall命令关闭用户所有相关进程,再删除该用户)
(3)修改用户
usermod命令:修改已创建的用户
指令格式:usermod 选项 用户名
选项 | 含义 |
---|---|
-g | 修改用户的初始组 |
-G | 修改用户的附加组 |
-u | 修改用户UID |
-l | 修改用户名 |
-d | 修改用户家目录 |
-c | 修改注释 |
-s | 修改Shell解释器 |
-e | 修改用户到期时间 |
-L | 锁定用户 |
-U | 解锁用户 |
chsh命令:修改用户的默认Shell解释器
指令格式:chsh 选项 用户名
选项 | 含义 |
---|---|
-s | 指定用户的默认Shell解释器 |
-l | 列出系统支持的所有Shell (读取/etc/shells文件内容) |
(4)管理用户密码
passwd命令:管理用户密码
指令格式1:passwd 选项 用户名
- 若无选项,则默认修改用户密码
- 若无用户,则默认作用于执行该命令的用户
选项 | 含义 |
---|---|
-f | 强制执行 |
-d | 删除密码 (后续登录无需输入密码) |
-l | 锁定密码 (拒绝登录) |
-u | 解锁密码 |
-S | 查询用户密码相关信息 |
-e | 强制用户下次登录需修改密码才可登录系统 |
--stdin | 将标准输入作为后续输入内容 |
指令格式2:passwd 选项 用户名
选项 | 含义 |
---|---|
-n N | N天之前不可修改用户密码 /etc/shadow文件的第4栏位 |
-x N | N天之内必须修改用户密码 /etc/shadow文件的第5栏位 |
-w N | 密码过期前N天警告用户 /etc/shadow文件的第6栏位 |
-i N | 密码过期N天后禁用用户 /etc/shadow文件的第7栏位 |
-S N | 列出用户密码的相关参数 |
--stdin | 将标准输入作为后续输入内容 |
chage命令:管理用户密码
指令格式1:chage 选项 用户名
选项 | 含义 |
---|---|
-l | 列出用户的密码参数 |
-d | 上一次修改密码的时间 修改/etc/shadow文件的第3栏位 |
-m | 两次密码相距的最小天数 修改/etc/shadow文件的第4栏位 |
-M | 两次密码相距的最大天数 修改/etc/shadow文件的第5栏位 |
-W | 密码过期时提起多少天警告 修改/etc/shadow文件的第6栏位 |
-I | 密码过期后多少天禁止用户 修改/etc/shadow文件的第7栏位 |
-E | 账号失效日期 修改/etc/shadow文件的第8栏位 |
/etc/passwd
/etc/passwd
:记录系统用户信息的文件,内容组成如下
用户名:密码:用户UID:初始组ID:注释:家目录:解释器Shell
字段 | 说明 |
---|---|
用户名 | 用户名称 (登录时输入) |
密码 | 占位符“x”代表 (真实密码默认记录在/etc/shadow) |
用户UID | 用户的唯一标识符 |
初始组ID | 用户所属初始组的ID |
注释 | 对用户的解释/备注 |
家目录 | 用户登录系统后默认工作目录 |
解释器Shell | 用户登录系统后默认使用的Shell解释器 |
UID范围 | ID特性 |
---|---|
0 (系统管理员) | 系统管理员 当拥有和root用户一样权限时,将该用户的UID改为0 |
1~999 (系统账号) | 保留给系统使用的ID 用于启动部分系统服务,所以系统账号通常是不可登录 1~200:由Linux发行版自行建立的系统账号 201~999:用户建立系统账户可使用的ID |
1000~60000 (可登录账号) | 普通用户使用 |
如:创建lisi用户,且lisi属于501初始组,500附加组,UID为666
//passwd文件内为用户的初始组,group文件内为用户的附加组
//一个用户为一个用户组的成员,则称这个组为该用户的附加组
/etc/shadow
/etc/shadow文件内容组成:
1)图中的口令为密码的意思
2)若口令过期,更改口令即可继续使用该用户
3)若用户过期,则该用户就被注销(不能再使用)
4)查询/etc/shadow文件中的密码加密机制:authconfig -- test | grep hashing
用户组管理
用户组管理:管理系统中用户组(添加、删除和修改)
- 组的添加、删除和修改实际上就是对/etc/group文件的更新
常用命令
(1)用户组添加:
groupadd命令:创建新用户组
指令格式:groupadd 选项 用户组组名
选项 | 含义 |
---|---|
-g | 指定用户组的ID(用户组的标识符) 若不指定,系统默认会从1000开始按顺序分配ID |
(2)用户组删除:
groupdel命令:删除已有的用户组
指令格式:groupdel 用户组组名
如:删除zhangsan和mawenlong用户组
//由图知:zhangsan用户组已删除,但mawenlong用户组却不能删除
因为若一个组是某一个用户的初始组时,该组不能被删除
//如果确实需要删除,可以移动(删除)以该组为初始组的用户
(3)用户组修改:
groupmod命令::修改指定用户组
指令格式:groupmod 选项 用户组组名
选项 | 含义 |
---|---|
-g | 修改用户组的ID |
-n | 修改用户组的名称 |
(4)用户组成员管理:
gpasswd命令:配置用户组的密码
指令格式:gpasswd 选项 用户组名
选项 | 含义 |
---|---|
-A | 指定用户为用户组的管理员 仅root可用 |
-a | 添加用户到用户组 |
-d | 删除用户组的用户 |
-r | 删除用户组的密码 |
-R | 用户组的密码失效 |
1)若没有选项,则为该用户组设置密码
2)有效用户组:用户在进行操作时,系统记录的数据
//建立文档时的属组就属于用户的有效用户组
groups命令::查询用户的所在的所有组
指令格式:groups 用户名
1)若没有指定用户名,则默认为当前用户;
2)第一个输出的用户组为有效用户组;
newgrp命令:切换用户的有效用户组
指令格式:newgrp 用户组
1)用户的有效用户组默认为用户的初始组;
2)切换的用户组必须是用户所属组(初始组和附加组);
//本质是提供一个新的shell和暂时更改用户的初始组
/etc/group
/etc/group文件内容组成:
用户组名:密码:用户组ID:组内用户名(组内成员)
内容 | 含义 |
---|---|
用户组名 | 用户组的名称 |
密码 | X表示占位符 用户组可以设置密码,但大部分情况下并不设置 |
用户组ID | 用户组的ID(标识符) |
组内用户名 | 该组是组内成员的附加组 |
/etc/gshadow
/etc/gshadow文件内容组成:
用户组名:密码:用户组管理员:组内用户名(组内成员)
pwck命令:验证/etc/passwd和/etc/shadow文件内容的格式和完整性
指令格式:pwck
pwconv命令:对比检查/etc/passwd和/etc/shadwo文件
指令格式:pwconv
1)若/etc/passwd内的用户并没有对应的/etc/shadow密码时
pwconv会读取/etc/login.defs密码相关数据,再建立该用户的/etc/shadow数据
2)若/etc/passwd中存在加密后的密码
则pwconv会将该密码移动到/etc/shadow中,在原位置填上“x”
pwunconv命令:将/etc/shadow密码栏数据移动到/etc/passwd的密码栏
指令格式:pwunconv
1)移动后会删除/etc/shadow文件(不建议使用)
chpasswd命令::读取未加密的密码,并进行加密后写入/etc/shadow密码栏
指令格式:chpasswd
用户通信
wall命令::向系统内所有登录用户的终端上发送信息(包括发送者)
指令格式:wall “广播信息”
write命令::向系统内指定的登录用户终端上发送信息
指令格式:write 用户名 终端
mesg命令::设置当前终端是否接受其他用户的信息
指令格式:mesg y或n
1)y代表接受,n代表拒绝
2)该设置对root传送的信息无效
//若查询当前mesg状态,直接输入mesg即可
mail命令::发送、查看和处理电子邮件
指令格式1:mail -s “邮件标题” 接受用户名@主机名 //发送邮件
//若发送给本机用户,则“@主机名”可省略
如:编写电子邮件发送给mwl用户
指令格式2:mail //查看和处理邮件
如:查看root用户发送给mwl用户的邮件
在查看邮件后,&输入命令处理邮件
命令 | 意义 |
---|---|
h | 列出邮件标题 可指定列出第几封 |
d | 删除邮件必须(配合q命令才行) 如:d10:删除第10封邮件 d10~20:删除第10到20封邮件 |
s | 将邮件存储为文件 可指定保存为那个文件(默认是/hom/mail/) |
x | 不做任何操作退出mail 若前面有任何操作,都会被撤销 |
q | 退出mail并执行前面输出的操作 |