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/sudoerssudo 规则(谁能用 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 用户名useraddsudo adduser devuser会自动创建家目录、问密码、加组等
创建新用户(非交互)useradd -m -s /bin/bash 用户名sudo useradd -m testuser需要手动设密码
删除用户deluser 用户名userdelsudo deluser --remove-home olduser加 --remove-home 删家目录
修改用户属性usermodusermodsudo usermod -aG sudo devuser-aG 追加组(不加 -a 会覆盖)
改密码passwd 用户名passwdsudo passwd devuserroot 可改任何人密码
锁定/解锁账户usermod -L/-U 用户名passwd -l/-usudo usermod -L guest锁定后无法登录
查看用户信息id 用户名 或 groups 用户名id devuser显示 UID、GID、所属组
查看所有用户getent passwdcat /etc/passwd

新手黄金法则:创建用户一律用 adduser,它比 useradd 友好很多(自动处理家目录、shell、GECOS 等)。

3. 组(Group)管理

组是权限共享的关键机制。

操作命令示例
创建组addgroup 组名 或 groupaddsudo 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/dirsetgid:新文件继承组
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):

  1. 创建专用文件:
    Bash
    sudo visudo -f /etc/sudoers.d/10-devuser
  2. 写入一行(NOPASSWD 可选,根据安全需求):
    text
    devuser ALL=(ALL:ALL) ALL
    # 或免密码:
    # devuser ALL=(ALL) NOPASSWD: ALL
  3. 或者最简单(大多数服务器用这个):
    Bash
    sudo usermod -aG sudo devuser

    然后注销重新登录生效。

验证 sudo 权限

Bash
sudo -l          # 列出当前用户可用 sudo 命令
sudo -u root whoami  # 测试是否能变成 root

6. 新手服务器/桌面 权限管理 Checklist

  1. 安装完系统 → 创建普通用户(别长期用 root)
  2. sudo adduser yourname → sudo usermod -aG sudo yourname
  3. 退出 root,用新用户登录
  4. 重要目录权限检查:/home、~/.ssh(700)、/etc/ssh/sshd_config(644)
  5. 共享目录用组 + setgid(chmod g+s)
  6. 定期检查:sudo find / -perm -4000(列出 setuid 程序,潜在风险点)
  7. 禁用不必要的账户:sudo usermod -L guest、sudo deluser --remove-home unused

掌握以上内容,你就能安全、高效地管理 Debian 的用户、组与权限,避免“权限不够”“文件被锁”“sudo 失效”等常见坑。

THE END