第5章 用户与用户组管理

📝 Linux学习笔记 - 第5章 🎯 共4节


本章目录


用户配置文件

返回目录 | 返回顶部

用户信息文件 /etc/passwd

文件格式:

用户名:密码标识:UID:GID:用户说明:家目录:登录之后的Shell
字段说明
用户名用户登录系统时使用的用户名
密码标识x代表真正的密码存放在/etc/shadow中
UID用户ID
GID用户初始组ID
用户说明用户的描述信息
家目录用户登录后的默认目录
登录Shell用户登录后使用的Shell

UID范围:

  • 0:超级用户(root)
  • 1-499:系统用户(伪用户)
  • 500-65535:普通用户

影子文件 /etc/shadow

文件格式:

用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码到期前警告天数:密码过期后宽限天数:账号失效时间:保留
字段说明
用户名与/etc/passwd对应
加密密码SHA512加密,!!或*代表无密码不能登录
最后一次修改时间从1970年1月1日算起的天数
最小修改时间间隔两次修改密码的最小间隔天数
密码有效期密码多少天后必须修改
密码到期前警告天数到期前几天开始警告
密码过期后宽限天数过期后还能用几天
账号失效时间账号过期日期
保留保留字段

时间戳换算:

date -d "1970-01-01 16066 days"
# 把时间戳换算为日期
 
echo $(( $(date +%s)/86400 + 1 ))
# 把日期换算为时间戳

组信息文件 /etc/group

文件格式:

组名:组密码标识:GID:组中附加用户
字段说明
组名组的名称
组密码标识x代表密码存放在/etc/gshadow
GID组ID
组中附加用户以此组为附加组的用户列表

组密码文件 /etc/gshadow

文件格式:

组名:组密码:组管理员用户名:组中附加用户

用户管理相关文件

返回目录 | 返回顶部

用户的家目录

  • 普通用户/home/用户名/,所有者和所属组都是此用户,权限是700
  • 超级用户/root/,所有者和所属组都是root用户,权限是550

普通用户更改为root权限:

vi /etc/passwd
# 编辑用户密码文件,修改第3字段用户ID(UID)为0
# 注意:是修改UID,不是GID

用户模板目录

/etc/skel/

可以创建一个文本如警告信息等,之后每创建一个用户自动复制警告信息文件到该用户的家目录。

用户的邮箱

/var/spool/mail/用户名/


用户管理命令

返回目录 | 返回顶部

查看用户ID

id 用户名

useradd 用户添加命令

useradd [选项] 用户名
选项说明
-u UID手工指定用户的UID号
-d 家目录手工指定用户的家目录,不推荐手工创建
-c 用户说明手工指定用户的说明
-g 组名手工指定用户的初始组
-G 组名指定用户的附加组,多组用,分隔
-s shell手工指定用户的登录shell,默认是/bin/bash

示例:

useradd user1
# 添加用户
 
useradd -u 666 -G root,bin -d /home/shijie -c "test user" -s /bin/bash shijie
# 创建UID为666,添加到root,bin用户组,创建/home/shijie家目录,添加说明,默认shell的shijie用户

useradd执行后系统操作

当键入useradd命令后系统所做的操作:

  1. /etc/passwd 中添加用户信息
  2. /etc/shadow 中添加密码信息
  3. /etc/group 中添加用户组
  4. /etc/gshadow 中添加组密码信息
  5. 创建用户家目录
  6. 创建用户邮箱

用户默认值文件

/etc/default/useradd

vi /etc/default/useradd
配置项说明
GROUP=100用户默认组
HOME=/home用户家目录
INACTIVE=-1密码过期宽限天数(shadow文件7字段)
EXPIRE=密码失效时间(shadow文件8字段)
SHELL=/bin/bash默认shell
SKEL=/etc/skel模板目录
CREATE_MAIL_SPOOL=yes是否建立邮箱

/etc/login.defs

vi /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 500最小和最大UID范围
GID_MAX 60000
ENCRYPT_METHOD SHA512加密模式

passwd 修改用户密码

root用户修改密码

passwd [选项] 用户名
选项说明
-S查询用户密码的密码状态,仅root用户可用
-l暂时锁定用户。仅root用户可用
-u解锁用户。仅root用户可用
—stdin可以通过管道符输出的数据作为用户的密码

示例:

passwd -S lamp
# 查看密码状态
# 输出示例:lamp PS 2013-01-06 0 99999 7 -1
# 用户名 密码设定时间 密码修改间隔时间 密码有效期 警告时间 密码不失效
 
passwd -l user1
# 锁定用户user1
# 系统实际上在shadow文件中的user1账户后加 !!(双感叹)
 
passwd -u user1
# 解锁用户
 
echo "123" | passwd --stdin lamp
# 使用字符串作为用户的密码

💡 可以直接编辑/etc/shadow文件,在需要锁定的用户后加!!(双感叹),解除锁定直接删除!!即可

普通用户修改自己的密码

passwd
# 在当前用户直接输入passwd即可

usermod 修改用户信息

usermod [选项] 用户名
选项说明
-u UID修改用户的UID号
-c 用户说明修改用户的说明信息
-G 组名修改用户的附加组
-L临时锁定用户(Lock)
-U解锁用户锁定(Unlock)

示例:

usermod -c "test user" lamp
# 修改用户的说明
 
usermod -G root lamp
# 把lamp用户加入root组
 
usermod -L lamp
# 锁定用户
 
usermod -U lamp
# 解锁用户

chage 修改用户密码状态

chage [选项] 用户名
选项说明
-l列出用户的详细密码状态
-d 日期修改密码最后一次更改日期(shadow3字段)
-m 天数两次密码修改间隔(4字段)
-M 天数密码有效期(5字段)
-W 天数密码过期前警告天数(6字段)
-I 天数密码过后宽限天数(7字段)
-E 日期账号失效时间(8字段)

示例:

chage -d 0 lamp
# 把密码修改日期归0了(shadow第3字段)
# 这样用户一登陆就要修改密码

userdel 删除用户

userdel [-r] 用户名
选项说明
-r删除用户的同时删除用户家目录

手工删除用户:

vi /etc/passwd
vi /etc/shadow
vi /etc/group
vi /etc/gshadow
rm -rf /var/spool/mail/lamp
rm -rf /home/lamp/

su 用户切换命令

su [选项] 用户名
选项说明
-选项只使用”-“代表连带用户的环境变量一起切换
-c仅执行一次命令,而不切换用户身份

示例:

su - root
# 普通用户若要完全切换到root,选项的 - 一定不能省
# 否则环境变量等不会改变
# root切换到普通用户则不需要
 
env
# 查看账户环境变量
 
su - root -c "useradd user3"
# 不切换成root,但是执行useradd命令添加user3用户

用户组管理命令

返回目录 | 返回顶部

groupadd 添加用户组

groupadd [选项] 组名
选项说明
-g GID指定组ID

示例:

groupadd tg
# 创建tg组

groupmod 修改用户组

groupmod [选项] 组名
选项说明
-g GID修改组ID
-n 新组名修改组名

示例:

groupmod -n newtg tg
# 把tg组名改为newtg

groupdel 删除用户组

groupdel 组名

⚠️ 注意:要删除的组不能是初始组,只能是附加组

gpasswd 把用户添加入组或从组中删除

gpasswd [选项] 组名
选项说明
-a 用户名把用户加入组
-d 用户名把用户从组中删除

示例:

gpasswd -a user tg
# 把user用户加入tg组
 
gpasswd -d user tg
# 把user用户从tg组中删除