如何在Linux上备份和恢复文件权限
问题:我想备份本地文件系统的文件权限,这样如果我不小心弄乱了文件权限,我可以将它们恢复到原始状态。有没有一种简单的方法可以在 Linux 上备份和恢复文件权限?
您可能听说过一个新手系统管理员犯下的悲剧性错误,他不小心输入了“chmod -R 777 /
”,并对他/她的 Linux 系统造成了严重破坏。当然,有一些备份工具(例如,cp
、rsync
、etckeeper
)可以备份文件及其文件权限。如果您使用此类备份工具,则无需担心文件权限损坏。
但在某些情况下,您希望单独临时备份文件权限(而不是文件本身)。例如,您想防止某个目录的内容被覆盖,因此您暂时删除了该目录下所有文件的写权限。或者您正在解决文件权限问题,因此对各处的文件运行 chmod
。在这些情况下,最好能够在更改之前备份原始文件权限,以便以后需要时恢复原始文件权限。在许多情况下,当您真正想要的只是备份文件权限时,完整文件备份就显得有些过分了。
在 Linux 上,使用访问控制列表 (ACL) 备份和恢复文件权限实际上非常简单。 ACL 定义了 POSIX 兼容文件系统上不同所有者和组对各个文件的访问权限。
以下是如何使用 ACL 工具在 Linux 上备份和恢复文件权限。
在 Linux 上安装 ACL 工具
首先,确保您安装了 ACL 工具。
对于 Debian、Ubuntu 或 Linux Mint:
$ sudo apt-get install acl
对于 CentOS、Fedora 或 RHEL:
$ sudo yum install acl
使用 ACL 工具备份和恢复文件权限
要备份当前目录(及其所有子目录)中所有文件的文件权限,请运行以下命令。
$ getfacl -R . > permissions.txt
该命令会将所有文件的 ACL 信息导出到名为 permissions.txt
的文本文件中。

例如,以下是从屏幕截图中显示的目录生成的 permissions.txt
片段。
# file: .
# owner: dan
# group: dan
user::rwx
group::rwx
other::r-x
# file: tcpping
# owner: dan
# group: dan
# flags: s--
user::rwx
group::rwx
other::r-x
# file: uda20-build17_1.ova
# owner: dan
# group: dan
user::rw-
group::rw-
other::r--
现在继续根据需要更改文件权限。例如:
$ chmod -R a-w .
要恢复原始文件权限,请转到生成 permissions.txt
的目录,然后运行:
$ setfacl --restore=permissions.txt
验证原始文件权限是否已恢复。