Linux多用户权限管理教程_sudoACL账户组策略应用

13次阅读

linux用户权限管理通过用户组、sudo和ACL分层协作:组策略定义身份归属,sudo控制特权命令执行,ACL实现文件级细粒度访问。

Linux多用户权限管理教程_sudoACL账户组策略应用

Linux多用户权限管理核心在于精准控制谁能在何时、以何种身份执行哪些命令。sudo、ACL和用户组策略不是孤立工具,而是分层协作的权限体系:组策略定义“谁属于哪类人”,sudo决定“谁能执行什么特权操作”,ACL解决“对特定文件或目录的精细访问”。关键不在砌命令,而在理解每层的职责边界。

用户与组:权限分配的基础单元

Linux一切权限最终落到用户(user)和组(group)。普通用户默认仅对自己主目录有完全控制权;系统通过/etc/group管理组成员关系,/etc/passwd记录用户基本信息。

  • 添加用户并指定初始组:useradd -m -g developers alice(-g 指定主组,-m 创建家目录)
  • 将现有用户加入附加组:usermod -aG sudo,developers bob(-aG 确保不覆盖已有组)
  • 验证组成员关系:groups aliceid bob

注意:用户登录后新加入的组不会立即生效,需重新登录或用 newgrp developers 切换当前会话组。

sudo:授予有限且可审计的特权执行能力

sudo 不是给 root 密码,而是按策略授权特定命令。配置集中在 /etc/sudoers(必须用 visudo 编辑,防止语法错误锁死系统)。

  • 让 developers 组所有成员免密运行 systemctl:%developers ALL=(ALL) NOPASSWD: /bin/systemctl start nginx
  • 限制某用户只能重启服务,不能停用或查看状态:alice ALL=(root) /bin/systemctl restart nginx
  • 日志审计:启用 Defaults logfile="/var/log/sudo.log" 记录每次 sudo 调用

避免写 ALL=(ALL) ALL —— 这等同于交出 root 权限,违背最小权限原则。

ACL:突破传统Ugo模型的文件级细粒度控制

当用户不属于文件所属组,又需要读写某个特定目录时,ACL 是唯一可靠方案。它为文件/目录额外添加访问条目,不破坏原有权限结构。

  • 启用 ACL(如 ext4 文件系统):mount -o remount,acl /(永久生效需在 /etc/fstab 中添加 acl 参数)
  • 给用户 carol 对 /srv/app/data 的读写权限:setfacl -m u:carol:rw /srv/app/data
  • 给组 devs 设置默认 ACL(影响新建文件):setfacl -d -m g:devs:rwx /srv/app/data
  • 查看 ACL:getfacl /srv/app/data;清除 ACL:setfacl -b /srv/app/data

ACL 权限优先级高于传统 rwx,但受 mask 限制 —— 实际生效权限是 ACL 条目与 mask 的交集,可用 setfacl -m m::rwx 调整 mask。

策略协同:一个典型运维场景示例

假设 Web 项目部署在 /var/www/myapp,需实现:开发组可更新代码,运维组可重启服务,审计员只读日志。

  • 创建专用组:groupadd webdev && groupadd webops && groupadd webaudit
  • 设置目录归属:chown -R :webdev /var/www/myappchmod 2775 /var/www/myapp(2 表示 SGID,新文件自动继承组)
  • 用 ACL 授予 webops 对 systemctl 的权限(通过 sudo),同时允许 webaudit 读取 /var/log/myapp/*.log:setfacl -m g:webaudit:r /var/log/myapp/
  • 在 /etc/sudoers 中授权:%webops ALL=(root) /bin/systemctl restart myapp

这样各角色权限清晰隔离,操作可追溯,无需共享账号或开放过度权限。

text=ZqhQzanResources