Debian 用户与权限管理
Debian 的用户与权限系统严格遵循 Unix 传统:一切皆文件,权限决定谁能读/写/执行。核心原则是最小权限:普通用户日常操作,root/sudo 只用于必须的特权任务。
1. 核心文件(了解这些就懂了 80%)
| 文件路径 | 用途 | 关键字段示例 | 直接编辑? |
|---|---|---|---|
| /etc/passwd | 用户基本信息(用户名、UID、家目录、shell) | user:x:1000:1000:User,,,:/home/user:/bin/bash | 否 |
| /etc/shadow | 加密密码 + 密码策略(过期、锁定等) | user:$y$j9T$...:19400:0:99999:7::: | 否(用 passwd) |
| /etc/group | 组信息(组名、GID、组成员) | sudo:x:27:user1,user2 | 否(用 addgroup) |
| /etc/sudoers | sudo 规则(谁能用 sudo 执行什么) | %sudo ALL=(ALL:ALL) ALL | 用 visudo |
| /etc/sudoers.d/ | 扩展规则(推荐放这里,避免改主文件) | /etc/sudoers.d/90-cloud-init-users | 用 visudo -f |
记住:永远不要用普通编辑器直接改 /etc/passwd、/etc/shadow 或 /etc/sudoers(会破坏系统),用专用命令或 visudo。
2. 用户管理常用命令对照表
| 操作 | 推荐命令(Debian 风格) | 底层命令(POSIX 风格) | 示例 | 备注 |
|---|---|---|---|---|
| 创建新用户(交互式,推荐) | adduser 用户名 | useradd | sudo adduser devuser | 会自动创建家目录、问密码、加组等 |
| 创建新用户(非交互) | — | useradd -m -s /bin/bash 用户名 | sudo useradd -m testuser | 需要手动设密码 |
| 删除用户 | deluser 用户名 | userdel | sudo deluser --remove-home olduser | 加 --remove-home 删家目录 |
| 修改用户属性 | usermod | usermod | sudo usermod -aG sudo devuser | -aG 追加组(不加 -a 会覆盖) |
| 改密码 | passwd 用户名 | passwd | sudo passwd devuser | root 可改任何人密码 |
| 锁定/解锁账户 | usermod -L/-U 用户名 | passwd -l/-u | sudo usermod -L guest | 锁定后无法登录 |
| 查看用户信息 | id 用户名 或 groups 用户名 | — | id devuser | 显示 UID、GID、所属组 |
| 查看所有用户 | getent passwd | cat /etc/passwd | — | — |
新手黄金法则:创建用户一律用 adduser,它比 useradd 友好很多(自动处理家目录、shell、GECOS 等)。
3. 组(Group)管理
组是权限共享的关键机制。
| 操作 | 命令 | 示例 |
|---|---|---|
| 创建组 | addgroup 组名 或 groupadd | sudo addgroup developers |
| 删除组 | delgroup 组名 | sudo delgroup oldgroup |
| 把用户加入组(追加) | usermod -aG 组名 用户名 | sudo usermod -aG docker www-data |
| 把用户从组移除 | gpasswd -d 用户名 组名 | sudo gpasswd -d user sudo |
| 查看某用户所有组 | groups 用户名 或 id -Gn 用户名 | groups devuser |
| 查看某组所有成员 | getent group 组名 | getent group sudo |
常见内置组(Debian 特色):
- sudo → 允许 sudo 提权(最常用)
- adm → 可读大部分日志
- docker → Docker 权限(需安装 docker.io 后出现)
- audio/video → 声卡/摄像头访问
- plugdev → 可插拔设备(如 U 盘)
4. 文件/目录权限管理(chmod / chown / chgrp)
权限用三位八进制表示:拥有者 / 组 / 其他(r=4, w=2, x=1)
| 命令 | 用途 | 常用示例 | 说明 |
|---|---|---|---|
| chmod | 修改权限 | chmod 755 script.sh | 拥有者 rwx,组/其他 rx |
| chmod -R 775 /var/www/project | 递归改目录 | ||
| chmod g+s /shared/dir | setgid:新文件继承组 | ||
| chown | 改拥有者(和组) | chown user:group file.txt | — |
| chown -R www-data:www-data /var/www | 递归,常用于 web 目录 | ||
| chgrp | 只改组 | chgrp developers code/ | — |
权限速查:
- 755:普通可执行脚本/程序
- 644:普通文件(可读,拥有者可写)
- 700:只允许拥有者访问(.ssh 目录常用)
- 775:共享目录(组内协作)
5. sudo 配置(最安全的方式)
Debian 默认把 sudo 权限给 sudo 组成员。
推荐做法(不要直接改 /etc/sudoers):
- 创建专用文件:Bash
sudo visudo -f /etc/sudoers.d/10-devuser - 写入一行(NOPASSWD 可选,根据安全需求):text
devuser ALL=(ALL:ALL) ALL # 或免密码: # devuser ALL=(ALL) NOPASSWD: ALL - 或者最简单(大多数服务器用这个):Bash
sudo usermod -aG sudo devuser然后注销重新登录生效。
验证 sudo 权限:
Bash
sudo -l # 列出当前用户可用 sudo 命令
sudo -u root whoami # 测试是否能变成 root6. 新手服务器/桌面 权限管理 Checklist
- 安装完系统 → 创建普通用户(别长期用 root)
- sudo adduser yourname → sudo usermod -aG sudo yourname
- 退出 root,用新用户登录
- 重要目录权限检查:/home、~/.ssh(700)、/etc/ssh/sshd_config(644)
- 共享目录用组 + setgid(chmod g+s)
- 定期检查:sudo find / -perm -4000(列出 setuid 程序,潜在风险点)
- 禁用不必要的账户:sudo usermod -L guest、sudo deluser --remove-home unused
掌握以上内容,你就能安全、高效地管理 Debian 的用户、组与权限,避免“权限不够”“文件被锁”“sudo 失效”等常见坑。
版权声明:
作者:后浪云
链接:https://idc.net/help/442474/
文章版权归作者所有,未经允许请勿转载。
THE END
