linux-user-permission-guide
2026/07/282 分钟阅读440 字
Linux 账号与权限管理速查
日常运维最常用的账号、用户组、权限、提权命令,按场景整理。
约定:示例在 root 下直接运行即可。发行版差异处已标注。一、创建账号
# Ubuntu/Debian 推荐(交互式,顺手建家目录、提示设密码)
adduser alice
# CentOS/RHEL 或所有发行版的原始写法(非交互,要手动加参数)
useradd -m -s /bin/bash alice # -m 建家目录,-s 指定 shell
passwd alice # 设密码区别:adduser友好但行为因发行版而异;useradd最通用,记得带-m,否则没家目录。
创建系统/服务账号(不能登录,只用来跑服务,更安全):
useradd -r -s /sbin/nologin -d /opt/app appuser二、用户组管理
groupadd deployers # 建组
usermod -aG deployers alice # 把 alice 加入 deployers 组(-aG 必须带 a,否则会踢出其他组!)
usermod -aG deployers bob
groups alice # 看 alice 在哪些组
id alice # 看 uid / gid / 所有组加入组后,当前已开的会话不生效,要重新登录或 newgrp deployers 切一下。三、sudo 提权(别老用 root)
# Ubuntu/Debian:加入 sudo 组即可
usermod -aG sudo alice
# CentOS/RHEL:加入 wheel 组
usermod -aG wheel alice精细化授权(比如只允许 alice 重启 nginx)用 visudo:
visudo # 永远用 visudo 编辑,它会检查语法,改错了不至于把 sudo 搞崩
# 末尾加一行:
alice ALL=(ALL) /bin/systemctl restart nginx四、文件权限(核心)
每个文件有 属主 / 属组 / 其他人 三组权限,每组是 r w x:
| 数字 | 权限 | 文件含义 | 目录含义 |
|---|---|---|---|
| 4 | r | 读 | 能 ls 看里面文件名 |
| 2 | w | 写 | 能在里面增删文件 |
| 1 | x | 执行 | 能 cd 进入(目录的 x 很关键) |
# chmod:改权限
chmod 755 script.sh # rwxr-xr-x (主人全权,其他人只读+进入)
chmod 644 notes.txt # rw-r--r-- (常规文件)
chmod +x deploy.sh # 给所有人加执行权限
chmod g+w shared/ # 给属组加写权限
# chown:改属主(和属组)
chown alice:deployers shared/ # 属主 alice,属组 deployers
chown -R alice:deployers /opt/app # -R 递归整个目录
# chgrp:只改属组
chgrp deployers shared/权限速记
| 模式 | 典型用途 |
|---|---|
755 | 目录、可执行脚本 |
644 | 普通文件 |
600 | 密钥、私密配置(只有主人能读写) |
700 | ~/.ssh 目录 |
SSH 关键坑:~/.ssh必须700、authorized_keys必须600,否则 sshd 会静默拒绝密钥登录。
五、实战场景
场景 A:多个协作者共享一个部署目录
groupadd deployers
usermod -aG deployers alice
usermod -aG deployers bob
chown -R root:deployers /opt/webapp
chmod -R 775 /opt/webapp # 组成员可读写
chmod g+s /opt/webapp # SGID:新建文件自动继承 deployers 组场景 B:限制某账号只能 sftp,不能 ssh 登服务器
useradd -m -s /usr/sbin/nologin uploader
passwd uploader
# 编辑 /etc/ssh/sshd_config,把子系统改成 internal-sftp 并 Match 该用户场景 C:彻底删账号
userdel -r alice # -r 连家目录一起删;不加 -r 只删账号,文件保留(属主会显示成 uid 数字)六、常用查询命令
whoami # 当前我是谁
id # 当前 uid/gid/组
cat /etc/passwd # 所有账号列表
cat /etc/group # 所有组
w # 谁现在登录着
last # 登录历史附:命令一览
| 操作 | 命令 |
|---|---|
| 建账号 | useradd -m -s /bin/bash <name> |
| 设密码 | passwd <name> |
| 建组 | groupadd <group> |
| 加入组 | usermod -aG <group> <name> |
| 提权 | usermod -aG sudo <name> (Debian) / wheel (RHEL) |
| 改权限 | chmod <mode> <path> |
| 改属主 | chown <user>:<group> <path> |
| 删账号 | userdel -r <name> |