详解如何备份及恢复 Linux linux文件权限怎么备份和恢复

安全一直计算机领域的热点话题,有非常完善的权限控制来保证文件系统的安全。为了更加安全的存储文件,Linux设置了不同层次的权限访问控制方式。

文件权限就是的文件的访问权限,具体包括对文件的读、写、删除和执行等。在Linux中每个用户有不同的权限,普通用户在自己的家目录里对于自己创建的文件有所有的权限,在家目录之外则可能仅有读权限。分配好每一个Linux用户的权限是我们开展工作的第一步,下面我们来看看Linux是怎样来管理用户权限的吧。

一、文件都有的三种权限

在Linux中每个文件对应三类用户都有三种权限:

 
我们来依次看看每一部分代表什么意思吧
-:第一个-代表文件类型,常见的文件类型有普通文件(-),目录(d),软链接(l),sockets文件(s),管道文件(p)等等
rw-r--r--:第二部分有9个字符,将它依次分成三分分别对应属主(u)、属组(g)和其他用户(o)的权限,每组有r,w,x三种权限。对于文件:r表示可读(cat,more,less,tail等查看文本内容的命令);w表示可写和删除(可用nano,vim等编辑工具更改内容,可用echo追加和覆盖);x表示可执行。

r:只能通过ls来查看目录下的文件,其他操作无法执行
 
 
w:单独的w权限什么都不能执行
 
 
x:可以切换进入目录,也可以ls查看文件信息,但必须写文件全名
 
 
对于w的权限,其必须和x搭配使用才能够发挥作用
 
 
 
在Linux中,rwx可以用八进制来表示,r用4来表示,w是2,x是1
还有一个比较特殊的权限X
对于目录,加上X权限,目录里的子目录都将有x的权限,里面的文件如果原来有执行的权限(无论那类用户)+X后所有的用户都将有x的权限,否则文件的权限将不做任何的改变:
 
 
对于文件,如果原来没有用户有执行的权限,则不受X的影响,否则+X后所有的用户都将有x的权限:
 
 
权限及文件拥有者的管理命令:chmod、chown和chgrp
chmod:更改文件的模式位,可以接多个文件或目录

-R:对于目录,可以递归改变其里面的文件模式

chown:更改文件的属主和属组,可以接多个文件
常用-R选项,和chmod的-R选项相同
 
 

当只有nieda: 时将同时改变属主和属组,其中冒号可以用.(点号)代替,如果只写:root将只会改变属组。目录也是同样的效果。
chgrp:更改组所有权,后接多个目录。-R选项
可以看到,chmod、chown、chgrp的选项几乎相同,-R和--reference的用法一样,chmod主要用于更改用户的权限位,chown改变属主和属组,chgrp只能改变属组
新建文件和目录的默认权限:umask
 

Linux默认创建文件的权限是644,目录是755。Linux为了安全将不允许新建的文件有可执行的权限,即其八进制不允许是奇数,如果是奇数则权限加一。
 
文件权限:666减去umask,如上所示将得到531,都是奇数有执行权限必须加一,得到642的权限

umask主要有两个选项:
 
-p选项方便加入到环境变量的配置文件
 
-S选项,以ugo的方式显示,umask也可以用ugo的方式修改
二、文件系统的特殊权限
Linux中普通用户有很多无法执行的操作,而且生产环境中,root也会被禁止登录系统,如果系统出现问题怎样修复呢?为了让普通用户可以临时执行只有管理员才能执行的命令,Linux设置了特殊权限的机制,总的来说就是u+s,g+s,o+t。

Linux中的进程权限访问控制叫做进程的安全上下文:
进程有属主和属组,进程对应的可执行二进制文件命令也有属主和属组。
进程的属主和属组是发起该进程的用户及其所在的主组
1、任何一个可执行程序文件能不能发起为进程,取决于发起者是否对该文件有执行权限
2、进程启动之后,属主为发起用户,属组为该用户所在的组
3、进程访问文件的权限取决于它的发起者
如果被访问文件的属主是该发起者,进程对该文件有属主权限
如果被访问文件的属组是该发起者,进程对该文件有属组权限
如果发起者是文件的other用户,进程对该文件有other的权限
可执行文件的SUID权限
当给一个可执行文件赋予u+s的权限,普通用户执行该命令时,启动的进程属主将变为该二进制文件的属主
注意:SUID只对可执行的二进制文件有效,对于目录没有意义
 
 
可执行文件的SGID权限
对于二进制可执行文件:
普通用户发起进程后,进程属组变为二进制文件的属组,方法同SUID

默认情况下,用户创建的文件其属组是用户的基本组,当给所在目录加g+s的权限后,所有用户在该目录下创建的文件其属组将继承该目录的属组。
 
注意:如果目录原来的group没有执行权限,当g+s后目录的group权限为S,即该组的成员没有x的权限,及无法cd进入该目录,u+s和o+t同样适用该准则。加g+s后如果默认创建额目录组没有x权限,那么在该目录下的子目录组权限是S。

通常如果用户对一个目录如果有写权限(也要加上x的权限啊),那么该用户可以删除该目录下的任何文件。如果将目录设置o+t的权限,只有文件的所有者和root可删除文件,Sticky设置在文件上无意义。
 
 
 


+i:不能删除,改名,更改




以上说的权限控制其实将所有用户分成了ugo三类,对于u和g我们可以精确指定,但other的定义太过于宽泛,那么如何更细致的管理权限呢?在linux里我们可以通过ACL来管理某个文件及其特定的用户和用户组权限,简单来说ACL只需掌握三个命令即可:setfacl,getfacl,chacl

centos7默认创建的ext4和xfs有acl的功能,在7之前手动创建的ext4文件系统需要手工添加:acl生效顺序:所有者——自定义用户——自定义组——其他人




chacl:更改文件或目录的ACL
 
 
 
可以看到设置ACL以后在其权限位的最后面有个+

-m 修改指定文件的acl,不能和-x混合使用

-b 删除所有acl设定参数
-k 移除预设的acl参数

-d 预设目录的acl参数
ACL中的mask值是自定义的最大权限,默认acl有x的权限,其中新建的文件也不会有x的权限

mask只影响除了所有者和other之外的用户和组的最大权限
Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限
用户或组的设置必须存在于mask权限设定范围内才会生效。
--set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以.
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息

    1.当我们配置系统和环境后,要备份或则克隆到其他硬盘上,该怎么做呢?下面介绍一下tar方法。我们都知道的Linux系统是万物皆文件。那么系统当然也可以把它当文件打包,tar是linux下的一个打包工具,下面用的ubuntu系统做示例,看看怎么操作吧。

 
 
 
tar - 是创建存档的命令。紧接着由每个字母修改,下面将对每个字母进行说明。
c - 创建新的备份存档。
v - 详细模式,tar将打印它在屏幕上所做的事情。
p - 保留存档中放置的文件的权限以便以后恢复。
z - 使用'gzip'压缩备份文件以使其更小。
f <filename> - 指定存储备份的位置,backup.tar.gz是此示例中使用的文件名。它将存储在当前工作目录中,即使用cd命令时设置的目录。
--exclude = /example/path - 此模型后面的选项指示tar 不要备份哪些目录。我们不想备份所有内容,因为某些目录不是很有用。第一个排除规则指示tar不要自行备份,这对于避免操作期间的错误很重要。
--one-file-system - 不要在不同的文件系统上包含文件。如果您希望其他文件系统(例如/ home分区或安装在/ media备份中的外部介质),您需要单独备份它们,或省略此标志。如果省略此标志,则需要添加几个--exclude =参数以避免您不想要的文件系统。这些将是root中的/proc,/sys,/mnt,/media,/run和/dev目录。/proc和/sys是虚拟文件系统,它将窗口提供给正在运行的内核的变量,因此您不希望尝试备份或还原它们。 /dev是一个tmpfs,其内容由udev动态创建和删除,因此您也不想备份或恢复它。同样,/run是一个tmpfs,它保存有关正在运行的系统的不需要备份的变量。
 
执行完成后,可能会出现一些提示或错误,“tar:Error exit from previous errors”或文件已经更改之类的消息,可以忽略它。
然后把backup.tar.gz这个备份文件复制到你的硬盘U盘。

2.为恢复到新硬盘,做准备

 
 
记录一下这些信息,我的是这样的,备份下来后面会用到

  
 
 
可见我的sda2是挂载在boot/efi下面的,到时候恢复也要创建这个目录并把sda2上挂载上去
 
 
得到,备份记录下来,后面会用到

  
 

打开终端,对新的硬盘进行分区和格式化,查看硬盘的标号,一般是sda
 
 
 
输入d,把原有的分区都删除掉,然后输入p查看分区
 
然后新建分区,输入n,分区号和大小都要和之前备份的那个一样,重复3次后是这样的
 
对sda1分区类型进行更改,输入t,选1,输入1,就是linux efi类型了,全部类型可以在输入t后输入l查看。看着对应的来就行了。
对sda2分区类型进行更改,输入t,选2,输入83,Linux文件系统类型
对sda3分区类型进行更改,输入t,选3,输入19,linux swap类型
然后就和原来的分区一样了
 


 
格式化sda2,更改uuid,这里的-U后面的uuid就是之前记录下来的要一样
 
 
好了,准备工作做完了。
 

1.挂载系统根目录,就是系统文件的那个分区,我这里是sda2,挂载到mnt下面
 
 
 

 
切换到根用户或者用sudo的命令,由于live-cd没有用户密码所以先要设置根的密码
 
 
x - 告诉tar立即提取f选项指定的文件。在这种情况下,存档是backup.tar.gz
-C <directory> - 此选项告诉tar在解压缩之前更改为特定目录。在此示例中,我们将还原到根(/mnt)目录。
--numeric-owner - 此选项告诉tar恢复归档中文件的数字所有者,而不是匹配要还原的环境中的任何用户名。这是因为您要恢复的系统中的用户ID:s不一定与您用于恢复的系统匹配(例如,Live CD)。
IconsPage /warning.png 这将覆盖指定装载中的每个文件和目录,并使用存档中的文件和目录。归档后创建的任何文件都不会存储在归档中,因此将保持不变允许恢复需要完成的时间。提取完成后,您可能需要重新创建原始存档中未包含的目录,因为您使用--exclude将其排除。这不适用于--one-file-system排除的文件系统。这可以使用以下命令完成:
完成后,重启并在进行备份时将所有内容恢复到系统状态。
 
 
 
 
 
 
将UUID后面的码换成刚刚得到的48e1-89a1,保存,退出。


此过程中要联网,在终端输入

  
 
 
 

等待它自动完成,弹出的窗口选是就行了。
完成后,重启就可以进入系统了。

在探索特定于CentOS的部署标准备份计划的方法之前,我们首先讨论标准级备份策略的典型考虑事项。我们想要习惯的第一件事是 3-2-1备份规则

在整个行业中,你会经常听到术语3-2-1备份模型。在实施备份计划时,这是一个非常好的方法。3-2-1定义如下: 3 份数据; 例如,我们可能有工作副本; 将一份拷贝放到使用rsync设计的冗余CentOS服务器上; 并旋转,非现场USB备份是由备份服务器上的数据制成的。 2 种不同的备份介质。在这种情况下,我们实际上有三种不同的备份介质:笔记本电脑或工作站的固态硬盘上的工作副本,RADI6阵列上的CentOS服务器数据以及置于USB驱动器上的非现场备份。异地数据 1 份; 我们每晚都在外部旋转USB驱动器。另一种现代方法可能是云备份提供商。

一个 裸机恢复计划 仅仅是由一个CentOS管理员制定了一个计划,有完整的所有数据上网的重要系统。假设100%的系统故障和所有过去的系统硬件丢失,管理员必须有一个计划来实现正常运行时间,完整的用户数据成本最小化停机时间。Linux中使用的单片内核实际上使得使用系统映像的裸机恢复比Windows更容易。Windows使用微内核体系结构。

完整的数据恢复和裸机恢复通常通过组合方法来完成,包括工作,配置关键操作服务器的生产磁盘映像,遵守3-2-1规则的用户数据的冗余备份。即使是一些敏感的文件可能存储在一个安全的,防火的保险箱,受限制的访问受信任的公司人员。

多相 裸机恢复数据恢复计划 使用原生的CentOS工具可能包括-

  • dd制作和恢复已配置服务器的生产磁盘映像

  • rsync对所有用户数据进行增量备份

  • tar&gzip存储来自管理员的密码和笔记的加密备份文件。通常,这可以放在USB驱动器上,加密并锁定在高级管理器访问的保险箱中。此外,如果当前管理员赢得彩票并消失在某个阳光明媚的岛屿,这可确保其他人知道重要的安全凭证。

如果系统因硬件故障或灾难而崩溃,则以下将是恢复操作的不同阶段 -

  • 使用配置的裸机映像构建工作服务器

  • 从备份中将数据还原到工作服务器

  • 有物理访问权限执行前两个操作所需的凭据

使用rsync进行文件级备份

rsync 是一个很好的实用程序,用于同步本地或其他服务器上的文件目录。系统管理员已经使用了多年的 rsync ,因此它对于备份数据非常精致。作者认为, 同步 的最佳功能之一是可以从命令行编写脚本。

在本教程中,我们将以各种方式讨论rsync -

  • 探索和谈论一些常见的选择
  • 通过SSH创建远程备份

以下是通过ssh 进行的基本 rsync 远程备份 -

如上所示,所有文件都被简单地提取到我们当前工作目录中的包含目录中。

使用gzip压缩文件备份

如前所述,我们可以使用tar或bzip2或gzip与 -j-z 命令行开关。我们也可以使用gzip压缩单个文件。但是,单独使用bzip或gzip并不能提供与 tar 结合的功能。

使用 gzip时 ,默认操作是删除原始文件,将每个文件替换为添加.gz扩展名的压缩版本。

gzip的一些常用命令行开关是 -

获取压缩存档的统计信息
以1到9的比例指定压缩级别

gzip 或多或少可以逐个文件地工作,而不是像一些Windows O / S压缩实用程序那样存档。主要原因是 tar 已经提供了高级存档功能。 gzip 被设计为仅提供压缩机制。

因此,在考虑 gzip 时,请考虑一个文件。考虑多个文件时,请考虑 tar 档案。现在让我们来探讨一下我们以前的 tar 档案。

让我们从我们的 rsync 备份中创建另一个 tar 归档文件。 __

为了演示目的,让我们 gzip 新创建的tarball,并告诉 gzip 保留旧文件。默认情况下,如果没有 -c 选项,gzip将用 .gz 文件替换整个tar归档文件。

让我们试着用 gzip 测试 -l 开关。

现在让我们使用-r选项递归压缩目录中的所有文本文件。

看到?不是有些人可能预料到的。所有原始文本文件都被删除,并且每个文件都被单独压缩。由于这种行为,当需要在单个文件中工作时,最好仅考虑 gzip

如上所示,我们将我们的tarball解压缩到/ tmp目录中。

在灾难恢复的情况下,加密tarball档案以存储可能需要由组织的其他员工访问的安全文档可能是一个棘手的概念。基本上有三种方法可以做到这一点:使用GnuPG,或使用openssl,或使用第三部分实用程序。

GnuPG主要是为非对称加密而设计的,并且在头脑中具有身份关联而不是密码。诚然,它可以用于对称加密,但这不是GnuPG的主要优势。因此,当有更多的人比原来的人需要访问时(比如一个企业管理者想要防止管理员把握王国的所有关键作为杠杆),我会打折扣GnuPG以存储具有物理安全性的档案。

像GnuPG这样的Openssl可以做我们想要的并且随CentOS一起发布。但是,再一次,并不是专门设计来做我们想要的,加密在安全社区中受到了质疑。

我们的选择是一个名为 7zip 的实用程序。7zip是一个像 gzip 这样的压缩工具,但有更多的功能。就像Gnu Gzip一样,7zip及其标准在开源社区中。我们只需要从我们的EHEL存储库安装7zip(下一章将详细介绍安装扩展企业存储库)。

一旦我们的EHEL存储库已经在CentOS中加载和配置,7zip就是一个简单的安装。

这样做很简单,7zip已经安装完毕,可以用于我们的tarball档案的256位AES加密。

现在我们使用7z用密码加密我们的gzip压缩文件。这样做的语法非常简单 -

其中, a: 添加到存档, -p: 加密并提示输入密码

现在,我们的.7z存档文件使用256位AES对gzip压缩包进行加密。

- 7zip使用AES 256位加密和密码和计数器的SHA-256散列,重复512K次以获得密钥导出。 如果使用复杂的密钥,这应该足够安全。

进一步加密和重新压缩档案的过程可能需要一些时间与较大的档案。

7zip是一种比gzip或bzip2更多功能的高级产品。但是,它不像CentOS或Linux世界那样标准。因此,其他公用事业应尽可能经常使用。

我要回帖

更多关于 linux文件权限怎么备份和恢复 的文章

 

随机推荐