如何备份及恢复Linux文件权限

 
http://embeddedlinux.org.cn/emb-linux/entry-level/201604/10-5337.html

三年前我就干过 chmod  * -R /

你可能听说或碰到过这样的事情:一个系统管理员菜鸟不小心输入"chmod -R 777 /"从而导致了巨大的悲剧,使得整个系统遭到了严重的破坏。在日常管理中,我们有许多工具可以用来备份文件权限,如cp、rsync、etckeeper等。如果你使用了这个备份工具,那么你的确不需要担心改变的文件权限问题。

但如果只是想暂时备份文件权限(而不是文件本身),例如:为了阻止一些目录的内容被覆盖暂时移除该目录下所有文件写的权限;或是正在排除文件权限问题的过程中需要对文件进行chmod命令操作。在这些情况下,我们可以在原始文件权限改变之前对其进行备份,一会我们需要它的时候再将原始权限还原。在很多情况下,如果你只是想要备份文件的权限,那么完整的文件备份是不必要的。
在Linux上,实际上备份和恢复文件权限使用访问控制列表(ACL)是容易的。ACL根据不同的所主和所组在兼容posix的文件系统上定义了单个文件的权限。

以下演示如何使用ACL工具备份和恢复Linux的文件权限

1. 安装ACL工具

在Debian, Ubuntu,Linux Mint上

$ sudo apt-get install acl

在CentOS,Fedora,RHEL上

$ sudo yum install acl
2. 备份当前目录下(包括子目录)所有文件的权限
[root@linuxprobe tmp]#  ls -l
total 8
-rwxr--r--. 1 root root  0 Mar  3 04:40 install.txt
-rwxr-xr-x. 1 root root  0 Mar  3 04:41 linuxprobe.txt
[root@linuxprobe tmp]# getfacl -R . > permissions.txt
...

此命令将所有文件的ACL信息全部写入名为permissions.txt文件。

以下是生成的permissions.txt文件中部分目录信息

[root@linuxprobe tmp]# cat permissions.txt
# file: .
# owner: root
# group: root
# flags: --t
user::rwx
group::rwx
other::rwx
# file: install.txt
# owner: root
# group: root
user::rwx
group::r--
other::r--

# file: linuxprobe.txt
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

# file: permissions.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
...
3. 修改某一文件权限,如:修改linuxprobe.txt及install.txt权限
[root@linuxprobe tmp]# chmod 733 linuxprobe.txt
[root@linuxprobe tmp]#  chmod 573 install.txt
[root@linuxprobe tmp]# ls -l
total 8
-r-xrwx-wx. 1 root root    0 Mar  3 04:40 install.txt
-rwx-wx-wx. 1 root root    0 Mar  3 04:41 linuxprobe.txt
-rw-r--r--. 1 root root 4361 Mar  3 04:41 permissions.txt
......
4. 恢复原有权限

1)cd到创建permissions.txt时所在的目录
2)执行以下命令:

setfacl --restore=permissions.txt

可以看到linuxprobe.txt及install.txt权限恢复了

[root@linuxprobe tmp]# setfacl --restore=permissions.txt
[root@linuxprobe tmp]# ls -l
total 8
-rwxr--r--. 1 root root    0 Mar  3 04:40 install.txt
-rwxr-xr-x. 1 root root    0 Mar  3 04:41 linuxprobe.txt
-rw-r--r--. 1 root root 4361 Mar  3 04:41 permissions.txt
......

本文永久更新链接:http://embeddedlinux.org.cn/emb-linux/entry-level/201604/10-5337.html

[转帖]如何备份及恢复Linux文件权限的更多相关文章

  1. 如何备份及恢复Linux文件权限

    你可能听说或碰到过这样的事情:一个系统管理员菜鸟不小心输入"chmod -R 777 /"从而导致了巨大的悲剧,使得整个系统遭到了严重的破坏.在日常管理中,我们有许多工具可以用来备 ...

  2. linux文件权限总结(创建root不可以删除文件、只可追加的日志文件等)

    文件类型 对于文件和目录的访问权力是根据读访问,写访问,和执行访问来定义的. 我们来看一下 ls 命令的输出结果 [root@iZ28dr6w0qvZ test]# ls -l 总用量 72 -rw- ...

  3. 修改linux文件权限

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  4. Linux:文件权限

    Linux:文件权限 1.文件权限 ☆文件所有者 ☆用户组 ☆其他人 ☆ROOT 说明: Linux系统中默认所有系统上的账号与一般身份用户,还有那个root的相关信息记录在/etc/passwd文件 ...

  5. Linux 文件权限总结

    在 Linux 中最基本的任务之一就是设置文件权限.理解它们是如何实现的是你进入 Linux 世界的第一步.如您所料,这一基本操作在类 UNIX 操作系统中大同小异.实际上,Linux 文件权限系统就 ...

  6. Linux&shell 之Linux文件权限

    写在前面:案例.常用.归类.解释说明.(By Jim) Linux文件权限用户useradd test (添加用户test)userdel test (删除用户test)passwd test(修改用 ...

  7. linux文件权限整理

    网上对linux文件权限的已经很多,不过还是要自己整理一下,不然每次都要查资料. linux下所有东西都是文件,包括设备,所以这里的文件也包括文件夹. 先是查看文件权限:ls -lh xzc@xzc- ...

  8. 修改linux文件权限命令:chmod 【转载】

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. chmod  命令可以改变所有子目录的权限,下面有2种方法 改变一个文件的权限: chmod ...

  9. Linux 文件权限于目录配置

    用户与用户组 我們以王三毛為例,王三毛這個『檔案』的擁有者為王三毛,他屬於王大毛這個群組, 而張小豬相對於王三毛,則只是一個『其他人(others)』而已. 不過,這裡有個特殊的人物要來介紹的,那就是 ...

随机推荐

  1. 51 Nod 1354 选数字(体现动态规划的本质)

    1354 选数字  基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 当给定一个序列a[0],a[1],a[2],...,a[n-1] 和一个整数K时 ...

  2. Python数据抓取(3) —抓取标题、时间及链接

    本次分享,jacky将跟大家分享如何将第一财经文章中的标题.时间以及链接抓取出来 (一)观察元素抓取位置 网页的原始码很复杂,我们必须找到特殊的元素做抽取,怎么找到特殊的元素呢?使用开发者工具检视每篇 ...

  3. Navicat Premium 12 卸载和注册表的删除

    卸载就不用我说了,win10也好,win7也好直接windows设置里的卸载,或者你觉得别的软件卸载的比较干净也行 不过还是不会删掉注册表,甚至文件夹都不删除, ... 这是卸载 ,在此说一下,为了安 ...

  4. 在CUDA8.0下指定位置编译安装OpenCV3.1.0来实现GPU加速(Compiling OpenCV3.1.0 with CUDA8.0 support)

    在CUDA8.0下指定位置编译安装OpenCV3.1.0 一.本人电脑配置:ubuntu 14.04, NVIDIA GTX1060. 二.编译OpenCV3.1.0前,读者需要成功安装CUDA8.0 ...

  5. Leetcode题目55.跳跃游戏(贪心算法-中等)

    题目描述: 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示例 1: 输入: [2,3,1,1,4] 输出: ...

  6. 课下选做作业MySort

    20175227张雪莹 2018-2019-2 <Java程序设计> 课下选做作业MySort 要求 注意:研究sort的其他功能,要能改的动代码,需要答辩 模拟实现Linux下Sort ...

  7. bootstrp的datetimepicker插件获取选定日期

    碰到一个日期选择,并将日期存储到数据库的需求,需要利用bootstrp的datetimepicker插件获取选定日期,并将其转换为指定字符窜,简单记录下实现的过程. 1. datetimepicker ...

  8. pycharm中模块不能导入的问题

    在pycharm中发现模块老是导入不成功 只能以这样的映射的方式 现在才知道: 模块的标志符可以由字母.数字.下划线组成,但是, 不能以数字开头,如果在给python文件起名时,以数字开头是无法在py ...

  9. docker进入容器的四种方法

    在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法. 进入Docker容器比较常见的几种 ...

  10. display:flex 布局详解(2)

    1.  flex设置元素垂直居中对齐 在之前的一篇文章中记载过如何垂直居中对齐,方法有很多,但是在学习了flex布局之后,垂直居中更加容易实现 HTML代码: <div class=" ...