当前位置: 首页 > news >正文

Linux权限管理进阶:文件归属、特殊权限与ACL详解

一、文件归属管理:chown命令

1. 基础语法与作用

chown 命令用于修改文件或目录的 属主(Owner) 和 属组(Group),是Linux权限管理中调整资源归属的核心工具。

chown [选项] 新属主:新属组 文件/目录  
  • 常用选项

    • -R:递归修改目录及其子内容。

    • -v:显示操作详情。

2. 典型应用场景

  • 修改属主和属组

    chown alice:developers file.txt  # 文件属主设为alice,属组设为developers  
  • 仅修改属主

    chown bob /data  # 目录属主设为bob(不改变属组)  
  • 仅修改属组

    chown :admins file.log  # 文件属组设为admins(等价于`chgrp`命令)  
  • 递归处理目录

    chown -R www-data:web /var/www  # 递归修改/var/www及其子内容属主和属组  

二、特殊权限:SUID/SGID与粘滞位

1. SUID(Set User ID)

  • 作用:允许普通用户执行文件时 临时继承文件属主权限(通常为root)。

  • 典型应用

    ls -l /usr/bin/passwd  
    # 输出:-rwsr-xr-x 1 root root ...(s表示SUID)  

    普通用户执行 passwd 命令时,可修改 /etc/shadow(需root权限)。

  • 设置方法

    chmod u+s /path/to/file   # 符号法  
    chmod 4755 /path/to/file  # 数字法(4表示SUID,755为基本权限)  

2. SGID(Set Group ID)

  • 作用

    • 文件:执行时继承文件属组权限。

    • 目录:新建文件的属组自动继承目录的属组。

  • 设置方法

    chmod g+s /path/to/dir    # 符号法  
    chmod 2770 /path/to/dir   # 数字法(2表示SGID,770为基本权限)  

3. 粘滞位(Sticky Bit)

  • 作用:限制目录中文件的删除权限(仅文件所有者、目录所有者或root可删除)。

  • 典型应用:共享目录 /tmp

    ls -ld /tmp  
    # 输出:drwxrwxrwt ...(t表示粘滞位)  
  • 设置方法

    chmod o+t /path/to/dir    # 符号法  
    chmod 1777 /path/to/dir   # 数字法(1表示粘滞位,777为基本权限)  

三、ACL访问控制:精细化权限管理

1. 为什么需要ACL?

传统Linux权限(属主、属组、其他用户)无法满足复杂场景:

  • 多用户/组独立授权:需为不同用户或组单独设置权限。

  • 权限继承:目录下新建文件需自动继承复杂规则。

2. ACL核心命令

  • 查看ACL权限

    getfacl /data/logs  
  • 设置ACL权限

    setfacl -m u:user1:rwx file.txt  # 为用户user1添加rwx权限  
    setfacl -m g:dev-team:rx dir/    # 为组dev-team添加rx权限  
  • 递归设置默认ACL(目录继承):

    setfacl -d -m u:user1:rwx dir/   # 新文件自动继承user1的rwx权限  
  • 删除ACL权限

    setfacl -x u:user1 file.txt      # 删除user1的ACL权限  
    setfacl -b dir/                  # 清除所有ACL规则  

3. 实战案例:运维部门共享目录权限

需求

  • 运维组(ops-team)完全控制 /data/logs

  • 开发组(dev-team)可查看但不可修改。

  • 临时审计员(audit-user)拥有7天读写权限。

  • 其他用户禁止访问。

实现步骤

# 创建目录并设置属组  
mkdir -p /data/logs  
chown :ops-team /data/logs  
chmod 770 /data/logs  # 设置ACL权限  
setfacl -m g:dev-team:rx /data/logs          # 开发组可读执行  
setfacl -m u:audit-user:rwx /data/logs       # 审计员可读写执行  # 设置默认ACL规则(继承)  
setfacl -d -m g:ops-team:rwx /data/logs  
setfacl -d -m g:dev-team:rx /data/logs  
setfacl -d -m u:audit-user:rw /data/logs  

验证效果

  • 运维用户:可创建、删除文件。

  • 开发用户:可查看文件,但无法修改或删除。

  • 审计用户:可读写文件。

  • 其他用户:无权访问。


四、总结与最佳实践

1. 权限管理原则

  • 最小权限原则:用户仅拥有完成任务所需的最小权限。

  • 定期审计:检查敏感文件权限(如/etc/shadow)。

  • 慎用特殊权限:SUID/SGID可能引入安全风险。

2. 命令速查表

操作命令示例说明
修改文件属主和属组chown user:group file同时修改属主和属组
设置SUID权限chmod u+s /usr/bin/script普通用户执行时继承root权限
设置粘滞位chmod 1777 /shared限制目录内文件删除权限
添加ACL权限setfacl -m u:user:rwx /data为用户单独设置读写执行权限
删除ACL权限setfacl -x u:user /data移除特定用户的ACL权限
http://www.xdnf.cn/news/221347.html

相关文章:

  • 力扣面试150题--删除链表的倒数第 N 个结点
  • 代发考试战报:4月份 思科认证,华为认证,考试战报分享
  • 不同类型插槽的声明方法和对应的调用方式
  • 题目:胖达的山头
  • 关于php-fpm的调优和配置
  • 2025年渗透测试面试题总结-拷打题库26(题目+回答)
  • AXPA17388: 4x45W 车用AB类四通道桥式输出音频功率放大器
  • MLOps全链路能力:模型监控、版本回滚与持续训练
  • 欧拉计划 Project Euler60(素数对集合)题解
  • LeetCode 2302 统计得分小于K的子数组数目(滑动窗口)
  • Mysql存储引擎、锁机制
  • (2)python之虚拟环境管理工具venv和anaconda
  • Lucene中不同搜索类型的使用方法、基本概念、应用场景、差异对比,并通过表格进行总结
  • JavaScript 作用域全面总结
  • 夜族觉醒 服务搭建 异地联机 保姆教程 流畅不卡顿
  • 【Science】强耦合手性准BIC驱动动量空间可编程高Q圆偏振激光——哈工大突破拓扑光子学新维度
  • GTC Taipei 2025 医疗域前瞻:从AI代理到医疗生态,解码医疗健康与生命科学的未来图景
  • 分享一款免费的 AI 工作流平台
  • Golang 并发编程
  • 从遍历序列构造二叉树:前序+中序与中序+后序的递归解法详解
  • USB 网卡——RNDIS 介绍
  • 数据资产:价值的源泉与释放之道
  • Langchain组件
  • 高级前端面试题:基于2025年最新技术体系
  • TS学习指南
  • 人工智能和机器学习在包装仿真中的应用与价值
  • MQTT - Android MQTT 编码实战(MQTT 客户端创建、MQTT 客户端事件、MQTT 客户端连接配置、MQTT 客户端主题)
  • Python列表全面解析:从基础到高阶操作
  • 域名转移:什么是转移码/EPP码/授权码?
  • 基于蓝耘MaaS平台进行api调用创建本地智能ai