用户管理
用户相关文件
| 文件 |
说明 |
/etc/passwd |
用户账户信息 |
/etc/shadow |
用户密码(加密) |
/etc/group |
组信息 |
/etc/gshadow |
组密码 |
/etc/login.defs |
用户账号限制默认值 |
/etc/default/useradd |
用户创建默认配置 |
/etc/passwd 格式(7 个字段,冒号分隔):
text1
| 用户名:密码占位符:UID:GID: 描述:家目录:登录 shell
|
示例:root:x:0:0:root:/root:/bin/bash
/etc/shadow 格式(9 个字段,冒号分隔):
text1
| 用户名:加密密码:最后修改时间:最小间隔:最大天数:警告天数:宽限天数:失效日期:保留
|
创建用户
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| sudo useradd username
sudo useradd -d /home/custom username
sudo useradd -u 1001 username
sudo useradd -g groupname username
sudo useradd -G group1,group2 username
sudo useradd -s /bin/zsh username
sudo useradd -M username
sudo useradd -r username
sudo useradd -c "Full Name,Dept" username
sudo adduser username
|
修改用户
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| sudo usermod -l newname oldname
sudo usermod -u 1002 username
sudo usermod -d /new/home username sudo usermod -d /new/home -m username
sudo usermod -g newgroup username
sudo usermod -G group1,group2 username
sudo usermod -aG groupname username
sudo usermod -s /bin/bash username
sudo usermod -L username
sudo usermod -U username
sudo chage -E 2026-12-31 username sudo chage -M 90 username sudo chage -m 7 username
|
删除用户
1 2 3 4 5 6 7 8
| sudo userdel username
sudo userdel -r username
sudo userdel -r -f username
|
查看用户信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| id username id -u username id -g username id -G username
finger username
groups username
whoami who am i
sudo grep username /etc/shadow sudo chage -l username
last username lastlog -u username
|
切换用户
1 2 3 4 5 6 7 8 9 10 11
| su username
su - username
su -c "command"
exit
|
组管理
创建组
1 2 3 4 5 6 7 8
| sudo groupadd groupname
sudo groupadd -g 1001 groupname
sudo groupadd -r groupname
|
修改组
1 2 3 4 5
| sudo groupmod -n newname oldname
sudo groupmod -g 1002 groupname
|
删除组
1 2 3 4 5
| sudo groupdel groupname
sudo groupdel -f groupname
|
组操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| sudo usermod -aG groupname username sudo gpasswd -a username groupname
sudo gpasswd -d username groupname
sudo gpasswd -A user1,user2 groupname
sudo gpasswd -M user1,user2,user3 groupname
getent group groupname grep groupname /etc/group
members groupname
|
文件权限
权限基础
Linux 权限分为三类用户:
- u (user/owner): 文件所有者
- g (group): 文件所属组
- o (other): 其他用户
三种基本权限:
| 权限 |
字母 |
数字 |
文件含义 |
目录含义 |
| 读 |
r |
4 |
查看内容 |
列出目录内容 |
| 写 |
w |
2 |
修改内容 |
创建/删除文件 |
| 执行 |
x |
1 |
执行程序 |
进入目录 |
查看权限
1 2 3 4 5 6 7 8 9 10 11
| ls -l file ls -la ls -ld dir
|
修改权限(chmod)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| chmod u+x file chmod g-w file chmod o=r file chmod a+x file chmod u+x,g+rx,o+r file chmod -R u+rwx dir
chmod 755 file chmod 644 file chmod 700 file chmod 4755 file chmod 6755 file
|
修改所有者(chown)
1 2 3 4 5 6 7 8 9 10 11 12 13
| sudo chown username file
sudo chown username:groupname file sudo chown username:group file
sudo chgrp groupname file sudo chown :groupname file
sudo chown -R username:group dir
|
常用权限组合
| 场景 |
权限 |
命令 |
| 私钥文件 |
600 |
chmod 600 id_rsa |
| 公钥/脚本 |
644/755 |
chmod 644 file |
| 网站目录 |
755/644 |
chmod -R 755 /var/www |
| 上传目录 |
777 |
chmod 777 uploads |
| 家目录 |
700 |
chmod 700 ~ |
| 敏感配置 |
600 |
chmod 600 .ssh/config |
特殊权限
SUID (Set UID)
当可执行文件设置了 SUID 位时,用户执行该文件时将以文件所有者的身份运行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| find / -perm -4000 2>/dev/null
chmod u+s file chmod 4755 file
chmod u-s file chmod 0755 file
/usr/bin/passwd /usr/bin/sudo /usr/bin/su
|
SGID (Set GID)
- 对文件:执行时以文件所属组身份运行
- 对目录:目录中创建的文件继承目录的组
1 2 3 4 5 6 7 8 9 10 11
| find / -perm -2000 2>/dev/null
chmod g+s file chmod 2755 file
mkdir /shared chmod 2775 /shared
|
Sticky Bit (粘滞位)
通常用于公共目录,用户只能删除自己创建的文件。
1 2 3 4 5 6 7 8 9 10 11 12 13
| ls -ld /tmp
chmod +t dir chmod 1777 dir
chmod -t dir chmod 0777 dir
|
特殊权限速查
| 权限 |
符号 |
数字位 |
设置命令 |
| SUID |
s/S |
4 |
chmod u+s / chmod 4xxx |
| SGID |
s/S |
2 |
chmod g+s / chmod 2xxx |
| Sticky |
t/T |
1 |
chmod +t / chmod 1xxx |
注意:小写 s/t 表示有执行权限,大写 S/T 表示无执行权限
访问控制列表 ACL
ACL 提供更细粒度的权限控制,可针对特定用户/组设置权限。
ACL 基本操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| getfacl file
setfacl -m u:username:rw file setfacl -m u:username:rwx file
setfacl -m g:groupname:rx file
setfacl -d -m u:username:rw dir setfacl -d -m g:groupname:rx dir
setfacl -x u:username file setfacl -b file
setfacl -R -m u:username:rw dir
|
ACL 权限掩码
1 2 3 4 5
| setfacl -m m::rx file
getfacl file | grep mask
|
ACL 示例
1 2 3 4 5 6
| mkdir /project setfacl -m g:devteam:rwx /project setfacl -m u:manager:rwx /project setfacl -d -m g:devteam:rx /project setfacl -d -m u:manager:rw /project
|
sudo 权限配置
sudoers 文件
/etc/sudoers 文件控制 sudo 权限,必须使用 visudo 编辑。
1 2 3 4 5
| sudo visudo
sudo EDITOR=vim visudo
|
sudoers 语法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| 用户名/组 主机=(目标用户) 命令
username ALL=(ALL) ALL
%groupname ALL=(ALL) ALL
username ALL=(ALL) /usr/bin/systemctl, /usr/bin/journalctl
username ALL=(ALL) NOPASSWD: ALL username ALL=(ALL) NOPASSWD: /usr/bin/apt
username ALL=(ALL) /usr/bin/docker exec mycontainer *
User_Alias ADMINS = alice, bob Cmnd_Alias SERVICES = /usr/bin/systemctl, /usr/bin/service ADMINS ALL=(ALL) SERVICES
|
常用配置示例
1 2 3 4 5 6 7 8 9 10
|
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart mysql
%developers ALL=(ALL) NOPASSWD: /usr/bin/journalctl
%dba ALL=(ALL) NOPASSWD: /usr/bin/mysql, /usr/bin/mysqldump
|
sudo 使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| sudo command
sudo -u username command
sudo -i sudo -s
sudo -l sudo -l -U username
sudo -k
|
用户环境配置
家目录结构
1 2 3 4 5 6 7 8
| /home/username/ ├── .bashrc ├── .bash_profile ├── .profile ├── .zshrc ├── .ssh/ ├── .config/ └── ...
|
环境变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| /etc/profile /etc/environment /etc/profile.d/*.sh
~/.bashrc ~/.bash_profile ~/.profile ~/.zshrc
env printenv echo $PATH
|
用户限制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
username hard nproc 100
username hard nofile 65535 username soft nofile 65535
username hard as 2097152
@developers hard nproc 200
ulimit -a ulimit -n ulimit -u
|
PAM 配置
1 2 3 4 5 6 7 8 9 10 11 12
| /etc/pam.d/
pam_limits.so pam_access.so pam_time.so pam_listfile.so
auth required pam_nologin.so auth required pam_env.so
|
实用命令速查
| 命令 |
功能 |
id |
显示用户/组 ID |
whoami |
显示当前用户名 |
users |
显示登录用户 |
w |
显示登录用户及活动 |
last |
显示最后登录记录 |
lastlog |
显示所有用户最后登录 |
passwd |
修改密码 |
chage |
修改密码过期策略 |
sudo |
以其他用户执行命令 |
su |
切换用户 |
useradd/userdel/usermod |
用户管理 |
groupadd/groupdel/groupmod |
组管理 |
chmod |
修改权限 |
chown |
修改所有者 |
chgrp |
修改组 |
getfacl/setfacl |
ACL 管理 |
visudo |
编辑 sudoers |
安全建议
- 最小权限原则:只授予必要的权限
- 定期审计:检查 SUID/SGID 文件和高权限账户
- 禁用 root 登录:使用 sudo 代替直接 root 登录
- 密码策略:设置合理的密码复杂度要求和过期策略
- 监控日志:关注
/var/log/auth.log 或 /var/log/secure
- 及时清理:删除不需要的用户账户