删除ACL权限需使用setfacl命令,-x选项可移除指定用户或组的特定权限,如setfacl -x u:john:rw report.txt;-b选项则彻底清除文件所有ACL规则,使其回归传统Unix权限模式,如setfacl -b confidential.log。判断文件是否启用ACL可通过getfacl命令查看详细列表,或使用ls -l观察权限字符串末尾是否有+号。删除特定条目为精准调整,保留其余ACL;删除全部ACL则是彻底重置,权限回归基本ugo模式。移除后,文件权限由原始chmod设置决定,mask权限失效,可能影响用户实际访问权限,操作前应通过getfacl确认当前权限结构以避免意外。

在Linux系统里,要删除一个文件的ACL(Access Control List)权限规则,我们主要会用到
setfacl
说实话,处理ACL权限,核心工具就是
setfacl
一种是针对性地删除某个用户或组的特定ACL条目。你可能给一个文件临时加了某个用户的读写权限,现在任务完成了,想把这个特定的权限收回来。这时候,我们会用到
-x
比如,你想删除用户
john
report.txt
setfacl -x u:john:rw report.txt
或者,如果你想删除组
devs
project_doc.pdf
setfacl -x g:devs:x project_doc.pdf
这里要注意,
-x
rw
x
getfacl filename
另一种情况是,你觉得这个文件的ACL权限太复杂了,或者根本就不需要ACL了,想彻底清空所有ACL规则,让它完全回归到传统的Unix权限体系。这时候,
setfacl
-b
--remove-all
例如,要彻底删除
confidential.log
setfacl -b confidential.log
执行这个命令后,文件所有的扩展ACL规则都会被移除,文件的权限将只由
ls -l

这其实是个很基础但又很重要的步骤,因为你总得知道有没有ACL才能谈删除。最直接的方法,就是用
getfacl
你只需要简单地运行:
getfacl 文件名
如果文件有ACL权限,
getfacl
还有一个更直观的线索,虽然不那么详细,但足以让你一眼识别:当你用
ls -l
+
rwxrw-r--+
+

在我看来,这两种删除方式代表了两种不同的管理哲学。
setfacl -x
而
setfacl -b
ls -l
rwx
选择哪种方式,主要取决于你的需求:是想做精细化调整,还是想彻底简化权限管理。我个人在处理那些权限结构已经很混乱,或者确定不再需要ACL的文件时,更倾向于直接用
-b

这是一个经常被忽视但又非常关键的问题。当文件的ACL权限被移除后,它的最终权限会回到最初的Unix权限模式,也就是我们通过
chmod
具体来说,当你执行
setfacl -b filename
ls -l
+
值得一提的是,ACL中的
mask
mask
举个例子,如果一个文件原本的ACL让某个用户有写权限,但它的基本权限里,所属组没有写权限。当ACL被移除后,这个用户可能就失去了写权限,因为它现在只受到所属组基本权限的限制(如果这个用户是所属组的一员)。所以,在删除ACL之前,最好先用
getfacl
以上就是Linux如何删除某个文件的ACL权限规则的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号