Appearance
用户管理
用户账户
useradd - 创建用户
bash
useradd username # 创建用户
useradd -m username # 创建用户并创建主目录
useradd -m -s /bin/bash username # 指定默认 Shell
useradd -m -d /home/custom username # 指定主目录
useradd -m -g developers username # 指定主组
useradd -m -G wheel,docker username # 指定附加组
useradd -m -u 1001 username # 指定 UID
useradd -m -e 2024-12-31 username # 指定过期日期
useradd -r systemuser # 创建系统用户usermod - 修改用户
bash
usermod -l newname oldname # 修改用户名
usermod -d /home/newdir username # 修改主目录
usermod -s /bin/zsh username # 修改默认 Shell
usermod -g developers username # 修改主组
usermod -aG docker username # 添加附加组
usermod -G group1,group2 username # 设置附加组(覆盖)
usermod -L username # 锁定用户
usermod -U username # 解锁用户
usermod -e 2024-12-31 username # 设置过期日期
usermod -e "" username # 取消过期日期userdel - 删除用户
bash
userdel username # 删除用户
userdel -r username # 删除用户和主目录
userdel -rf username # 强制删除passwd - 密码管理
bash
passwd # 修改当前用户密码
passwd username # 修改指定用户密码
passwd -l username # 锁定用户密码
passwd -u username # 解锁用户密码
passwd -d username # 删除密码
passwd -e username # 强制下次登录修改密码
passwd -S username # 查看密码状态
passwd -n 7 -x 90 -w 7 username # 密码策略密码策略选项:
- -n: 最小使用天数
- -x: 最大使用天数
- -w: 警告天数
- -i: 过期后锁定天数
查看用户信息
bash
id username # 查看用户 ID 信息
id -u username # 查看 UID
id -g username # 查看 GID
id -G username # 查看所有组 ID
id -un # 当前用户名
whoami # 当前用户名
who # 查看登录用户
w # 详细登录信息
users # 登录用户列表
finger username # 用户详细信息
pinky username # 简化版用户信息用户组管理
groupadd - 创建组
bash
groupadd developers # 创建组
groupadd -g 1001 developers # 指定 GID
groupadd -r systemgroup # 创建系统组groupmod - 修改组
bash
groupmod -n newname oldname # 修改组名
groupmod -g 1002 groupname # 修改 GIDgroupdel - 删除组
bash
groupdel groupname # 删除组gpasswd - 组密码管理
bash
gpasswd groupname # 设置组密码
gpasswd -r groupname # 删除组密码
gpasswd -a username groupname # 添加用户到组
gpasswd -d username groupname # 从组中移除用户
gpasswd -A admin groupname # 设置组管理员
gpasswd -M user1,user2 groupname # 设置组成员列表查看组信息
bash
groups # 当前用户所属组
groups username # 指定用户所属组
cat /etc/group # 查看所有组
getent group groupname # 查看组信息用户配置文件
/etc/passwd - 用户信息
username:x:1001:1001:User Name:/home/username:/bin/bash字段说明:
- 用户名
- 密码占位符(x 表示密码在 /etc/shadow)
- UID
- GID
- 用户描述
- 主目录
- 默认 Shell
bash
cat /etc/passwd
getent passwd username/etc/shadow - 密码信息
username:$6$hash:19600:0:99999:7:::字段说明:
- 用户名
- 加密密码
- 上次修改日期(从1970-01-01起的天数)
- 最小使用天数
- 最大使用天数
- 警告天数
- 过期后锁定天数
- 账户过期日期
- 保留字段
bash
sudo cat /etc/shadow
sudo chage -l username # 查看密码过期信息/etc/group - 组信息
groupname:x:1001:user1,user2字段说明:
- 组名
- 密码占位符
- GID
- 组成员列表
bash
cat /etc/group
getent group/etc/gshadow - 组密码信息
bash
sudo cat /etc/gshadow权限管理
基本权限
| 权限 | 文件 | 目录 |
|---|---|---|
| r (4) | 读取内容 | 列出内容 |
| w (2) | 修改内容 | 创建/删除文件 |
| x (1) | 执行文件 | 进入目录 |
chmod - 修改权限
数字方式:
bash
chmod 755 file # rwxr-xr-x
chmod 644 file # rw-r--r--
chmod 600 file # rw-------
chmod 700 file # rwx------
chmod 777 file # rwxrwxrwx
chmod -R 755 directory # 递归修改符号方式:
bash
chmod u+x file # 所有者添加执行权限
chmod g-w file # 组移除写权限
chmod o=r file # 其他人只读
chmod a+x file # 所有人添加执行权限
chmod u=rwx,g=rx,o=r file
chmod +x file # 默认所有用户特殊权限
| 权限 | 数字 | 说明 |
|---|---|---|
| SUID | 4 | 以文件所有者身份执行 |
| SGID | 2 | 以文件所属组身份执行 |
| Sticky | 1 | 只有所有者可删除 |
bash
chmod 4755 file # SUID
chmod 2755 dir # SGID
chmod 1755 dir # Sticky Bit
chmod u+s file # 设置 SUID
chmod g+s dir # 设置 SGID
chmod +t dir # 设置 Sticky BitACL - 访问控制列表
bash
getfacl file # 查看 ACL
setfacl -m u:username:rwx file # 设置用户 ACL
setfacl -m g:groupname:rx file # 设置组 ACL
setfacl -m u:username:rw- dir # 设置目录 ACL
setfacl -x u:username file # 删除用户 ACL
setfacl -b file # 删除所有 ACL
setfacl -d -m u:username:rx dir # 设置默认 ACL(新文件继承)
setfacl -R -m u:username:rx dir # 递归设置chown - 修改所有者
bash
chown user file # 修改所有者
chown user:group file # 修改所有者和组
chown :group file # 只修改组
chown -R user:group directory # 递归修改
chown --reference=file1 file2 # 参照文件设置chgrp - 修改组
bash
chgrp group file # 修改组
chgrp -R group directory # 递归修改sudo 权限
配置 sudo
bash
visudo # 编辑 sudoers 文件sudoers 配置示例
root ALL=(ALL:ALL) ALL
username ALL=(ALL) ALL
username ALL=(ALL) NOPASSWD: ALL
username ALL=(ALL) /usr/bin/apt, /usr/bin/yum
%wheel ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL格式说明:
用户 主机=(运行身份) 命令sudo 使用
bash
sudo command # 以 root 执行命令
sudo -u username command # 以指定用户执行
sudo -l # 查看可执行的命令
sudo -k # 清除缓存密码
sudo -v # 验证 sudo 密码
sudo -i # 切换到 root
sudo su - # 切换到 root切换用户
su - 切换用户
bash
su - # 切换到 root
su - username # 切换到指定用户
su username # 切换用户(不加载环境)
su -c "command" username # 以指定用户执行命令su 与 sudo 的区别
| 特性 | su | sudo |
|---|---|---|
| 需要密码 | 目标用户密码 | 当前用户密码 |
| 权限范围 | 完全切换 | 可限制命令 |
| 日志记录 | 无 | 有 |
| 安全性 | 较低 | 较高 |
登录管理
查看登录信息
bash
who # 查看登录用户
w # 详细登录信息
last # 登录历史
last -n 20 # 最近20条
last -f /var/log/wtmp.1 # 指定日志文件
lastb # 失败登录记录
lastlog # 所有用户最后登录时间强制用户下线
bash
pkill -u username # 终止用户所有进程
pkill -9 -t pts/0 # 终止指定终端
who -u # 查看用户 PID
kill -9 <PID> # 终止进程批量用户管理
批量创建用户
bash
for user in user1 user2 user3; do
useradd -m $user
echo "$user:password" | chpasswd
done使用 newusers 批量创建
创建文件 users.txt:
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bashbash
newusers users.txt批量修改密码
创建文件 passwords.txt:
user1:password1
user2:password2bash
chpasswd < passwords.txt