0

0

Linux如何使用ACL设置精细权限

P粉602998670

P粉602998670

发布时间:2025-09-12 08:22:01

|

878人浏览过

|

来源于php中文网

原创

Linux中ACL可实现更细粒度的文件权限控制,通过setfacl和getfacl命令设置和查看权限,需安装acl包并在支持ACL的文件系统上使用,权限掩码(mask)限制实际生效权限,默认ACL可实现继承,ACL优先级高于传统组权限但不覆盖文件所有者权限。

linux如何使用acl设置精细权限

Linux 使用 ACL 可以更细致地控制文件和目录的权限,超越了传统的用户、组和其他用户的权限设置。

使用 ACL,你可以为特定的用户或组设置额外的权限,例如只允许某个用户读取文件,或者允许某个组修改目录下的文件。这在多人协作的环境中非常有用。

ACL 的主要命令是

setfacl
getfacl
setfacl
用于设置 ACL 权限,
getfacl
用于查看 ACL 权限。

如何安装 ACL 工具

在大多数 Linux 发行版中,ACL 工具默认没有安装。你需要手动安装

acl
包。

  • Debian/Ubuntu:

    sudo apt-get update
    sudo apt-get install acl
  • CentOS/RHEL/Fedora:

    sudo yum install acl
    # 或者
    sudo dnf install acl

安装完成后,建议重新挂载文件系统,以确保 ACL 功能被正确启用。不过通常情况下,重启系统是最简单的方案。

如何查看文件或目录的 ACL 权限?

使用

getfacl
命令可以查看文件或目录的 ACL 权限。例如,要查看文件
test.txt
的 ACL 权限,可以运行:

getfacl test.txt

输出可能如下所示:

# file: test.txt
# owner: user1
# group: group1
user::rw-
user:user2:r--
group::r--
group:group2:--x
mask::rwx
other::r--
  • file
    : 文件名。
  • owner
    : 文件所有者。
  • group
    : 文件所属组。
  • user::rw-
    : 文件所有者的权限(读写)。
  • user:user2:r--
    : 用户
    user2
    的权限(只读)。
  • group::r--
    : 文件所属组的权限(只读)。
  • group:group2:--x
    : 组
    group2
    的权限(执行)。
  • mask::rwx
    : 权限掩码,用于限制最大有效权限。
  • other::r--
    : 其他用户的权限(只读)。

如何设置文件或目录的 ACL 权限?

使用

setfacl
命令可以设置文件或目录的 ACL 权限。

  1. 给特定用户设置权限:

    setfacl -m u:user2:rw- test.txt

    这条命令给用户

    user2
    设置了对文件
    test.txt
    的读写权限。
    -m
    选项表示修改 ACL,
    u:user2:rw-
    表示用户
    user2
    的权限为读写。

  2. 给特定组设置权限:

    setfacl -m g:group2:r-- test.txt

    这条命令给组

    group2
    设置了对文件
    test.txt
    的只读权限。
    g:group2:r--
    表示组
    group2
    的权限为只读。

  3. 移除特定用户或组的 ACL 权限:

    setfacl -x u:user2 test.txt

    这条命令移除用户

    user2
    对文件
    test.txt
    的 ACL 权限。
    -x
    选项表示移除 ACL。

  4. 设置默认 ACL 权限:

    默认 ACL 权限用于设置目录中新建文件和子目录的默认权限。

    setfacl -d -m u:user2:rwX directory

    这条命令给目录

    directory
    设置了默认 ACL 权限,用户
    user2
    在该目录下创建的文件和子目录将默认拥有读写权限。注意
    X
    权限,它表示只有当目录本身具有执行权限时,才赋予新建的文件执行权限。

  5. 递归设置 ACL 权限:

    Cutout.Pro抠图
    Cutout.Pro抠图

    AI批量抠图去背景

    下载
    setfacl -R -m u:user2:r-- directory

    这条命令递归地给目录

    directory
    及其所有子文件和子目录设置 ACL 权限,用户
    user2
    将拥有只读权限。
    -R
    选项表示递归设置。

如何理解 ACL 中的权限掩码 (mask)?

ACL 中的权限掩码 (mask) 用于限制 ACL 权限的最大有效值。换句话说,即使你给用户或组设置了很高的权限,最终生效的权限也不会超过权限掩码所允许的范围。

例如,如果权限掩码设置为

r--
,那么即使你给用户设置了
rw-
权限,最终用户也只能拥有
r--
权限。

可以使用

setfacl
命令修改权限掩码:

setfacl -m m::rwx test.txt

这条命令将文件

test.txt
的权限掩码设置为
rwx

如何删除文件或目录的所有 ACL 权限?

使用

setfacl
命令的
-b
选项可以删除文件或目录的所有 ACL 权限:

setfacl -b test.txt

这条命令会删除文件

test.txt
的所有 ACL 权限,只保留文件所有者、文件所属组和其他用户的基本权限。

ACL 权限与传统权限的优先级是怎样的?

ACL 权限会覆盖传统权限设置。如果一个用户拥有 ACL 权限,那么 ACL 权限将优先于该用户的所属组和其他用户的权限。

但是,文件所有者的权限始终有效,不受 ACL 影响。

如何处理 ACL 权限的继承问题?

默认情况下,新建的文件和目录不会自动继承父目录的 ACL 权限。要实现 ACL 权限的继承,需要在父目录上设置默认 ACL 权限。

例如:

setfacl -d -m u:user2:rwX directory

这条命令给目录

directory
设置了默认 ACL 权限,用户
user2
在该目录下创建的文件和子目录将自动继承读写权限。

在使用 ACL 时可能遇到的问题及解决方案

  • 问题:

    setfacl: Operation not supported
    错误

    这个错误通常表示文件系统不支持 ACL。确保文件系统已经挂载并启用了 ACL 功能。可以使用

    mount
    命令查看文件系统的挂载选项,确保包含
    acl
    选项。如果没有,需要重新挂载文件系统,或者修改
    /etc/fstab
    文件,添加
    acl
    选项。

  • 问题:ACL 权限没有生效

    可能是权限掩码 (mask) 限制了 ACL 权限的生效。可以使用

    getfacl
    命令查看权限掩码,并使用
    setfacl
    命令修改权限掩码,使其允许所需的权限。

  • 问题:递归设置 ACL 权限时出现错误

    可能是由于某些文件或目录没有访问权限。确保当前用户具有足够的权限访问所有文件和目录,或者使用

    sudo
    命令运行
    setfacl
    命令。

总的来说,ACL 提供了一种非常灵活和强大的权限管理机制,可以满足各种复杂的权限需求。掌握 ACL 的使用方法,可以更好地保护文件和目录的安全,提高系统的安全性。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1415

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

706

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

296

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

782

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

575

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

550

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

300

2023.07.20

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

384

2023.07.25

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

54

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.6万人学习

ThinkPHP6.x API接口--十天技能课堂
ThinkPHP6.x API接口--十天技能课堂

共14课时 | 1.1万人学习

ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 8.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号