用户管理

用户管理:管理系统中用户(添加、删除和修改)

  • 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并执行前面输出的操作