Linux权限管理以UID/GID为核心,分超级用户(UID=0)、普通用户(UID≥1000)和程序用户(UID 1–999,配/nologin),结合主组与附加组实现批量授权,辅以/etc/passwd(Shell控制登录)、/etc/shadow(密码状态)及ACL精细化管控。

Linux 用户权限管理不是简单地“给 sudo 就完事”,而是围绕账户属性(UID、GID、主目录、Shell、组成员关系等)层层设防,实现从登录控制到资源访问的精细隔离。
用 UID/GID 和账户类型区分权限边界
系统靠 UID 和 GID 识别身份,权限决策由此出发:
- UID=0 是 root,拥有内核级权限,不建议日常使用;
- 普通用户 UID ≥ 1000(CentOS/RHEL 7+),默认仅对其家目录有完全控制权;
-
程序用户 UID 1–999,通常配
/sbin/nologin或/bin/false,禁止交互式登录,仅用于服务运行; - GID 决定文件创建归属:用户新建文件时,默认属组是其主组(/etc/passwd 第4字段),而非当前所在附加组。
通过 /etc/passwd 和 /etc/shadow 控制登录能力
这两个文件共同决定“谁能进系统”和“怎么进”:
-
/etc/passwd中第7字段(Shell)是关键开关:/bin/bash允许登录,/sbin/nologin或/bin/false直接拒绝 shell 访问; -
/etc/shadow中第2字段为密码状态:*或!!表示密码被锁定或未设置,用户无法认证登录; - 禁用账户可直接改 Shell,比删用户更安全——保留历史日志和文件归属不变。
用主组 + 附加组批量分配资源权限
组是权限复用的核心机制,避免逐个赋权:
- 每个用户有且只有一个主组(创建时自动建立,同名),影响新文件默认 GID;
-
附加组用于横向授权,例如把多个用户加入
docker组,即可免 sudo 使用 docker 命令; - 添加附加组用
usermod -aG groupname username,-a参数不可省略,否则会覆盖已有附加组; - 权限生效需用户重新登录或启动新会话,
newgrp可临时切换主组(仅限当前 shell)。
借助 ACL 实现单点精细化授权
当传统“所有者-组-其他”模型不够用时,ACL 提供额外维度:
- 先确认文件系统支持 ACL:
tune2fs -l /dev/sdXn | grep "Filesystem features"含acl即可; - 给特定用户加权限:
setfacl -m u:alice:rwx /shared/report; - 禁止某用户访问某目录:
setfacl -m u:bob:--- /data/private; - 查看 ACL 设置:
getfacl /path,注意末尾的+符号表示存在 ACL 条目。


















