• Linux的系统权限


    一、linux权限的介绍

    linux系统的权限主要是用于用户对文件或目录的操作。

    [root@node1 ~]# ll /etc/hosts
    -rw-r--r--. 1 root root 158 Jun  7  2013 /etc/hosts
    
    -         rw-      r--      r--
    特殊权限   属主权限   属组权限  其它用户权限
    
    r:读权限 使用数字4代替
    w:写权限 使用数字2代替
    x:执行权限 使用数字1代替

    二、文件的权限

    Linux系统中的权限对于文件和目录来说

    1)可读r:表示具有读取、浏览文件内容(即读取文件实体block)的权限。
    2)可写w:表示具有新增、修改、删除文件内容的权限。
    3)可执行x:表示具有执行文件的权限。
    4) 如果没有可读r的配合,那么使用vim编辑文件时会提示无法编辑(但可强制编辑覆盖文件),可以使用echo等命令进行重定向或追加内容到文件。
    5) 对于可执行x,需要注意以下3点。a、首先文件的本身要能够执行(文件为命令或脚本)。b、如果是普通用户,同时还需要具备可读r的权限才能执行文件。c、而root用户只要有可执行x的权限就能执行文件。
    
    特别注意:
        删除、移动或创建文件等的权限是受父目录(上一级目录)的权限控制的(因为文件名没有存放在Inode里,而是在上级目录的block里存放着的,若修改上级目录的block(删除文件本体),当然会受到上级目录的Inode的权限控制),与文件本身的权限无关,因此,文件本身的可写w权限,与文件是否能被删除和改名无关。

    实验案例:

    实验环境

    [root@node1 data]# ll /data
    total 4
    -rw-r--r-- 1 root root 17 Sep 26 22:21 test.sh
    [root@node1 data]# echo 'echo hello world' > test.sh
    
    [root@node1 data]# ll
    total 4
    -rw-r--r-- 1 root root 17 Sep 26 22:21 test.sh
    
    [root@node1 data]# ./test.sh 
    hello world

    实验要求:

    使用ywx用户来测试对root用户创建的test.sh文件的rwx权限

    默认权限下,使用ywx用户来测试

    [ywx@node1 data]$ ll
    total 4
    -rw-r--r-- 1 root root 17 Sep 26 22:21 test.sh
    [ywx@node1 data]$ cat test.sh 
    echo hello world     #<===因为有r权限可以查看test.sh的内容
    [ywx@node1 data]$ echo 111 >> test.sh 
    -bash: test.sh: Permission denied  #<===无w权限,不能对test.sh做修改
    [ywx@node1 data]$ ./test.sh
    -bash: ./test.sh: Permission denied #<===无x权限,不能执行test.sh脚本

    使用root用户对other添加w权限,使用ywx用户来测试

    [root@node1 data]# chmod o+w test.sh 
    [root@node1 data]# ll
    total 4
    -rw-r--rw- 1 root root 17 Sep 26 22:21 test.sh
    
    使用ywx用户测试
    [ywx@node1 data]$ echo 'echo OK' >> test.sh 
    [ywx@node1 data]$ cat test.sh 
    echo hello world
    echo OK
    [ywx@node1 data]$ ./test.sh
    -bash: ./test.sh: Permission denied
    
    #有w权限后,ywx用户可以修改test.sh文件,任然无法执行

    使用root用户对other再次添加w权限,使用ywx用户来测试

    [root@node1 data]# chmod o+x test.sh 
    [root@node1 data]# ll
    total 4
    -rw-r--rwx 1 root root 25 Sep 26 22:29 test.sh
    
    使用ywx用户测试
    [ywx@node1 data]$ ll test.sh 
    -rw-r--rwx 1 root root 25 Sep 26 22:29 test.sh
    [ywx@node1 data]$ ./test.sh 
    hello world
    OK
    #有了x权限后,ywx用户可以执行test.sh

    使用root用户把other的权限更改为-wx,使用ywx用户来测试

    [root@node1 data]# chmod o=wx test.sh 
    [root@node1 data]# ll
    total 4
    -rw-r---wx 1 root root 25 Sep 26 22:29 test.sh
    
    使用ywx用户测试
    [ywx@node1 data]$ cat test.sh 
    cat: test.sh: Permission denied
    [ywx@node1 data]$ echo 111 >> test.sh 
    [ywx@node1 data]$ ./test.sh
    bash: ./test.sh: Permission denied
    [ywx@node1 data]$ vim test.sh
    "test.sh" [Permission Denied]  
    #没有r权限,只能使用echo命令追加文件内容

    使用root用户把other的权限更改为rwx,使用ywx用户来移动和删除test.sh

    [root@node1 data]# chmod o=rwx test.sh 
    [root@node1 data]# ll
    total 4
    -rw-r--rwx 1 root root 29 Sep 26 22:34 test.sh
    
    #使用ywx用户来测试对文件的移动和删除
    [ywx@node1 data]$ mv test.sh /tmp
    mv: cannot move ‘test.sh’ to ‘/tmp/test.sh’: Permission denied
    [ywx@node1 data]$ rm -f test.sh 
    rm: cannot remove ‘test.sh’: Permission denied
    [ywx@node1 data]$ 
    #删除、移动或创建文件等的权限是受父目录(上一级目录)的权限控制的(因为文件名没有存放在Inode里,而是在上级目录的block里存放着的,若修改上级目录的block(删除文件本体),当然会受到上级目录的Inode的权限控制),与文件本身的权限无关
    [ywx@node1 data]$ ll -d /data
    drwxr-xr-x 2 root root 21 Sep 26 22:45 /data
    #/data目录的other没有w权限

    三、目录的权限

    Linux系统中目录的权限

    1)可读r:表示具有浏览目录下面文件及子目录名的权限,例如,可执行ls dir命令查看目录下的内容。但是如果没有可执行x权限的配合,则不能切换到指定目录里,即无法执行cd dir命令,而且在执行ls命令查看列表时,虽然可以看到所有的文件名,但是会提示无权访问目录下的文件。执行ls-l命令查看列表目录下的文件属性时,所有文件对应的属性都会带有问号,也会提示无权访问目录下的文件,但是依然可以看到所有的文件名。
    2)可写w:表示具有增加、删除或修改目录内文件的权限。但是,如果没有可执行x权限的配合,即使有w权限,也无法删除或创建文件。
    3)可执行x:表示具有进入目录的权限。例如,可以执行cd dir命令切换到目录下,但是无法列表目录下的文件及子目录。

    实验案例:

    实验环境

    [root@node1 data]# ll -d /data
    drwxr-xr-x 2 root root 21 Sep 26 22:45 /data

    使用root用户给data目录other添加w权限,ywx用户来测试

    [root@node1 data]# chmod o+w /data
    [root@node1 data]# ll -d /data
    drwxr-xrwx 2 root root 21 Sep 26 22:45 /data
    
    使用ywx来测试
    [ywx@node1 data]$ touch test{1..3}.txt
    [ywx@node1 data]$ ll
    total 4
    -rw-rw-r-- 1 ywx  ywx   0 Sep 26 22:52 test1.txt
    -rw-rw-r-- 1 ywx  ywx   0 Sep 26 22:52 test2.txt
    -rw-rw-r-- 1 ywx  ywx   0 Sep 26 22:52 test3.txt
    -rw-r--r-- 1 root root 29 Sep 26 22:34 test.sh
    [ywx@node1 data]$ rm -f test{1..3}.txt
    [ywx@node1 data]$ ll
    total 4
    -rw-r--r-- 1 root root 29 Sep 26 22:34 test.sh
    [ywx@node1 data]$ mkdir /data/kaka
    [ywx@node1 data]$ ll
    total 4
    drwxrwxr-x 2 ywx  ywx   6 Sep 26 22:53 kaka
    -rw-r--r-- 1 root root 29 Sep 26 22:34 test.sh
    [ywx@node1 data]$ rm -rf kaka
    [ywx@node1 data]$ ll
    total 4
    -rw-r--r-- 1 root root 29 Sep 26 22:34 test.sh
    
    #ywx用户可以在data目录下创建和删除文件及目录

    使用root用户把data目录other的权限改为r--

    [root@node1 data]# chmod o=r /data
    [root@node1 data]# ll -d /data
    drwxr-xr-- 2 root root 21 Sep 26 22:53 /data
    
    使用ywx用户测试
    [ywx@node1 ~]$ ll /data
    ls: cannot access /data/test.sh: Permission denied
    total 0
    -????????? ? ? ? ?            ? test.sh
    [ywx@node1 ~]$ cd /data
    -bash: cd: /data: Permission denied
    #只能列出/data目录下的文件或目录,没有x权限,属性信息为?

    使用root用户把data目录other的权限改为r-x

    [root@node1 data]# chmod o=rx /data
    [root@node1 data]# ll -d /data
    drwxr-xr-x 2 root root 21 Sep 26 22:53 /data
    
    使用ywx用户测试
    [ywx@node1 ~]$ ll /data
    total 4
    -rw-r--r-- 1 root root 29 Sep 26 22:34 test.sh
    [ywx@node1 ~]$ cd /data
    [ywx@node1 data]$ pwd
    /data
    #可以列出和进入data目录

    四、umask

    设置问价或目录的默认权限

    1、文件默认权限计算

    创建文件默认最大的权限为666(-rw-rw-rw-),其默认创建的文件没有可执行权限x位。

    对于文件来说,umask的设置是在假定文件拥有八进制666的权限上进行的,文件的权限就是666减umask(umask的各个位数字也不能大于6,比如077就不符合条件)的掩码数值。如果得到的3位数字每一位都是偶数,那么这就是最终结果;如果有若干位的数字是奇数,那么这个奇数需要加1变成偶数,最后得到全是偶数的结果。

     

    2、目录默认权限计算(umask没有奇偶之分)

    创建目录默认最大的权限为777(-rwx-rwx-rwx),默认创建的目录属主是有x权限的,即允许用户进入。

    创建目录默认最大的权限为777(-rwx-rwx-rwx),默认创建的目录属主是有x权限的,即允许用户进入。

    五、Linux系统特殊权限位

    1.suid

    suid(setuid)位通过S字符标识,存在于基本权限的用户权限位的x权限对应的位置,如果用户权限位对应的x权限位上有x权限,则suid就用小写的s标识,suid的s对应的数字权限为4,完整权限用八进制数4000表示。

    [root@ywx ~]# touch test.txt  #<==创建测试文件,目录也是一样的。
    [root@ywx ~]# ls -l test.txt 
    -rw-r--r--. 1 root root 183 Apr 30 14:33 test.txt  #<==默认权限为644。
    [root@ywx ~]# chmod u+s test.txt  #<==在用户位增加suid权限。
    [root@ywx ~]# ls -l test.txt 
    -rwSr--r--. 1 root root 183 Apr 30 14:33 test.txt #<==查看设置结果,因为用户位没有x权限,所以是大写的S,被设置为suid的文件显示的背景是红色,文件名是白色。

    suid位功能

    #在Linux系统中,有时执行某个命令(例如普通用户使用passwd修改自身账号密码)时,需要对另一个文件(/etc/shadow)进行操作,而执行passwd修改的文件/etc/shadow又是普通用户没有权限进行操作的,例如,修改用户密码的命令passwd,该命令文件的所有者和用户组都是root,但是/etc/shadow文件的权限极低,不允许任何普通用户及属主用户访问,具体信息如下:
    [root@node1 ~]# ls -l /etc/shadow
    ----------. 1 root root 785 Apr 30 09:39 /etc/shadow  #<==所有用户没有任何访问权限,只有管理员可改。
    
    这样的权限,对于普通用户是没有办法更改的,但是系统还需要对普通用户开放自己更改自身账号密码的功能,因此就必须要让普通用户有权限修改shadow文件,这时就可以通过对passwd命令设置suid位来解决。
    [root@node1 data]# ll /usr/bin/passwd
    -rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd

    suid作用

       简单地说,suid的作用就是让普通用户可以在执行某个设置了suid位的命令或程序时,拥有与root管理员一样的身份和权限(默认情况)。3.理解passwd命令的suid功能
       根据权限,ywx用户无法修改shadow文件,但是因为passwd具有suid权限,因此,当ywx用户执行passwd时,就可以取得root管理员的身份和权限(实际上是获取passwd对应用户的身份),所以就可以修改原本ywx没权限修改的/etc/shadow了(修改过程中是以root身份操作的,这就是suid的作用)

    suid总结

    1)suid的功能是是针对二进制命令或程序的,不能用在Shell等类似脚本文件上。
    2)用户或属主对应的前三位权限的x位上,如果有s(S)则表示具备suid权限。
    3)suid的作用就是让普通用户可以在执行某个设置了suid位的命令或程序时,拥有与命令对应属主(一般为root管理员)一样的身份和权限(默认)。
    4)二进制命令程序需要具有可执行权限x配合才能进行相关操作。
    5)suid对应的身份和权限仅在程序命令的执行过程中才有效。
    6)suid是一把双刃剑,是一个比较危险的功能,对系统安全存在一定的威胁,企业里用户授权可以使用sudo等替代sgid功能。
    7)在进行安全优化时,系统中默认设置了suid权限的命令要取消掉。

    实验案例:

    使用root用户给rm目录添加suid,ywx用户可以删除原本在data目录中不能删除的文件

    [root@node1 data]# ll -d /data
    drwxr-xr-x 2 root root 21 Sep 26 22:53 /data
    
    [ywx@node1 data]$ rm -f test.sh 
    rm: cannot remove ‘test.sh’: Permission denied
    #ywx因为权限问题不能删除test.sh文件按
    
    使用root给rm添加suid
    [root@node1 data]# ll /usr/bin/rm
    -rwxr-xr-x. 1 root root 62952 Oct 31  2018 /usr/bin/rm
    [root@node1 data]# chmod u+s /usr/bin/rm
    [root@node1 data]# ll /usr/bin/rm
    -rwsr-xr-x. 1 root root 62952 Oct 31  2018 /usr/bin/rm
    
    [ywx@node1 data]$ rm test.sh 
    [ywx@node1 data]$ ll
    total 0
    #ywx用户可以使用rm命令来删除data目录下的文件

    2.sgid

    sgid(setgid)位同样是通过S字符来进行标识的,但是,sgid位存在于基本权限的用户组权限位的x权限对应的位置,如果用户组权限位对应的x权限位上有x权限,则sgid就用小写的s来标识,suid的s对应的数字权限为2,完整的权限用八进制数2000来表示。

    [root@ywx ~]# touch test.txt #<==创建测试文件,目录也是一样的。
    [root@ywx ~]# ls -l test.txt
    -rw-r--r--. 1 root root 12 Apr 30 14:38 test.txt  #<==默认权限为644。
    [root@ywx ~]# chmod g+s test.txt #<==在用户组位增加sgid权限。
    [root@ywx ~]# ls -l test.txt 
    -rw-r-Sr--. 1 root root 12 Apr 30 14:38 test.txt #<==查看设置结果,因为用户组位没有x权限,所以是大写的S,被设置为sgid的文件显示的背景是黄色,文件名是黑色

    对于二进制命令或者程序来说,sgid的功能与suid基本相同,唯一的区别是,suid是获得命令所属用户的身份和权限,而sgid是获得命令所属用户组的身份和权限。

    sgid总结

    1)与suid不同的是,sgid既可以针对文件,也可以针对目录进行设置!
    2)sgid的权限是针对用户组权限位的。
    
    对于文件来说,sgid的功能具体如下。
    1)sgid仅对二进制命令及程序有效。
    2)二进制命令或程序,也需要有可执行权限x的配合。
    3)执行命令的任意用户可以获得该命令在程序执行期间所属组的身份和权限。
    
    对于目录(继承目录所属的组)来说,sgid的功能具体如下。
    1)Linux里默认情况下所有用户创建文件,默认用户和组都是自身。
    2)sgid可以让用户在此目录下创建的文件和目录具有与此目录相同的用户组设置。

    二进制命令的操作与suid一样,这里不在演示。

    对目录的操作

    使用root用户把data目录的属组该为ywx,并添加sgid的权限

    [root@node1 data]# chown root.ywx /data
    [root@node1 data]# ll -d /data/
    drwxr-xr-x 2 root ywx 6 Sep 26 23:17 /data/
    [root@node1 data]# chmod g+s /data
    
    使用root和ywx用户分别在data目录下创建一个文件test1.log和test2.log
    [root@node1 data]# chmod g+w /data
    
    [root@node1 data]# touch test1.log
    [root@node1 data]# ll
    total 0
    -rw-r--r-- 1 root ywx 0 Sep 26 23:23 test1.log
    
    [ywx@node1 data]$ touch test2.log
    [ywx@node1 data]$ ll
    total 0
    -rw-r--r-- 1 root ywx 0 Sep 26 23:23 test1.log
    -rw-rw-r-- 1 ywx  ywx 0 Sep 26 23:24 test2.log
    #可以发现root和ywx在data目录下创建的文件的数组都为ywx组

    3.sticky

    sticky(粘滞)位通过字符T标识,存在于基本权限的其他用户位对应的x权限位上,如果其他用户位的x权限位上有x权限,则sticky(粘滞)位通过小写的t标识,对应的数字权限是1,完整的权限用八进制数1000表示。被设置了sticky(粘滞)位权限的文件会显示黑字绿底,最典型的带sticky(粘滞)位权限的目录就是/tmp。

    [root@ywx ~]# ls -ld /tmp
    drwxrwxrwt. 3 root root 4096 Apr 30 08:26 /tmp #<==/tmp目录默认就有sticky权限,绿底黑字显示。
    [root@ywx ~]# ls -ld /data
    drwxr-xr-x. 2 root root 4096 Apr 30 13:09 /data
    [root@ywx ~]# chmod o+t /oldboy #<==在其他用户位增加sticky权限。
    [root@ywx ~]# ls -ld /data
    drwxr-xr-t. 2 root root 4096 Apr 30 13:09 /data #<==查看设置结果,因为其他用户位有x权限,所以是小写的s,文件显示的背景是蓝色,文件名是白色。

    粘滞位(sticky bit)的功能现在已经很少用了,不过对于像/tmp目录这样的,因为其是整个系统用户的临时文件存放地,因此还是有点意义的。一个目录即使它的所有权限都开放了,即权限为rwxrwxrwx,而同时设置了粘滞位,那么除非目录的属主和root用户都有权限删除它,除此之外其他用户是不能删除这个目录的。粘贴位的用途一般是将一个文件夹的权限都打开,然后共享该文件,像/tmp目录一样。粘滞位的功能虽然方便,但是同时也带来了一定的安全隐患,生产环境中应禁止设置粘滞位权限。

    sticky总结

    除root外,sticky的目录中的文件,只能由属主用户来删除。其它用无法删除,一般用于共享。

    实验案例

    实验环境

    [root@node1 data]# chmod 777 /data
    [root@node1 data]# chmod o+t /data
    [root@node1 data]# ll -d /data
    drwxrwxrwt 2 root ywx 40 Sep 26 23:24 /data

    创建ywx1和ywx2两用户

    [root@node1 data]# useradd ywx1
    [root@node1 data]# useradd ywx2
    [root@node1 data]# tail -2 /etc/passwd
    ywx1:x:1002:1002::/home/ywx1:/bin/bash
    ywx2:x:1003:1003::/home/ywx2:/bin/bash

    ywx1和ywx2分别在/data下创建ywx1.log和ywx2.log

    [root@node1 ~]# su - ywx1
    [ywx1@node1 ~]$ cd /data
    [ywx1@node1 data]$ echo ywx1 > ywx1.log
    
    [root@node1 ~]# su - ywx2
    [ywx2@node1 ~]$ cd /data
    [ywx2@node1 data]$ echo ywx2 > ywx2.log
    [ywx2@node1 data]$ ll
    total 8
    -rw-rw-r-- 1 ywx1 ywx1 5 Sep 26 23:31 ywx1.log
    -rw-rw-r-- 1 ywx2 ywx2 5 Sep 26 23:31 ywx2.log
    
    在ywx1上删除ywx2.log
    [ywx1@node1 data]$ rm -f ywx2.log
    rm: cannot remove ‘ywx2.log’: Operation not permitted
    #无法删除ywx2.log
    [ywx1@node1 data]$ rm -f ywx1.log
    [ywx1@node1 data]$ ll
    total 4
    -rw-rw-r-- 1 ywx2 ywx2 5 Sep 26 23:33 ywx2.log
    #可以删除数组是自己的文件ywx1.log

    六、设定文件特殊属性

    设置文件的特殊属性,可以访问 root 用户误操作删除或修改文件

    不能删除,改名,更改

    chattr +i

    只能追加内容,不能删除,改名

    chattr +a

    显示特定属性

    lsattr

    实验案例

     
    在data目录中创建一个test.log,让所有用户包含root用户也不能删除更改
    [root@node1 data]# echo ywx > test.log
    [root@node1 data]# cat test.log 
    ywx
    
    给test.log文件添加chattr +i权限
    [root@node1 data]# chmod 000 test.log 
    [root@node1 data]# ll
    total 4
    ---------- 1 root root 4 Sep 28 05:06 test.log
    [root@node1 data]# chattr +i test.log 
    [root@node1 data]# lsattr test.log
    ----i----------- test.log
    
    使用root用户删除、更改test.log
    [root@node1 data]# echo 2222 >> test.log 
    -bash: test.log: Permission denied
    [root@node1 data]# rm -f test.log 
    rm: cannot remove ‘test.log’: Operation not permitted
    [root@node1 data]# mv test.log ywx.log
    mv: cannot move ‘test.log’ to ‘ywx.log’: Operation not permitted
    #chattr +i权限是让root用户也不能删除更改文件,可以对重要的文件进行保护
    
    配置chattr +a让root用户只能向test.log中追加信息
    [root@node1 data]# chattr -i test.log 
    [root@node1 data]# chattr +a test.log 
    [root@node1 data]# lsattr test.log 
    -----a---------- test.log
    
    [root@node1 data]# mv test.log ywx.log
    mv: cannot move ‘test.log’ to ‘ywx.log’: Operation not permitted
    [root@node1 data]# rm -f test.log 
    rm: cannot remove ‘test.log’: Operation not permitted
    [root@node1 data]# echo king > test.log 
    -bash: test.log: Operation not permitted
    [root@node1 data]# echo king >> test.log 
    [root@node1 data]# cat test.log 
    ywx
    king
    #只能使用echo命令向test.log中追加内容,也不能使用vim来编辑test.log

    七、设置文件访问控制列表acl

    ACL:Access Control List,实现灵活的权限管理

    除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

    CentOS7 默认创建的xfs和ext4文件系统具有ACL功能

    CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加

    tune2fs –o acl /dev/sdb1
    mount –o acl /dev/sdb1 /mnt/test

    ACL生效顺序:

    所有者,自定义用户,所属组|自定义组,其他人

    ACL相关命令

    setfacl 可以设置ACL权限

    getfacl 可查看设置的ACL权限

    实验案例

    使用root用户创建一个test.log文件,属性为600
    [root@node1 ~]# cd /data
    [root@node1 data]# echo ni hao > test.log
    [root@node1 data]# chmod 600 test.log 
    [root@node1 data]# ll
    total 4
    -rw------- 1 root root 7 Sep 28 05:16 test.log
    #该文件除了root可以读写,其它用户这里使用ywx2来测试,都无法读写
    [root@node1 ~]# su - ywx
    Last login: Sat Sep 26 21:49:21 CST 2020 on pts/1
    [ywx@node1 ~]$ cd /data
    [ywx@node1 data]$ ll
    total 4
    -rw------- 1 root root 7 Sep 28 05:16 test.log
    [ywx@node1 data]$ cat test.log 
    cat: test.log: Permission denied
    [ywx@node1 data]$ echo 111 >> test.log 
    -bash: test.log: Permission denied
    #现在设置acl在不改变文件权限下,让ywx用户可以读写test.log
    [root@node1 data]# setfacl -m u:ywx:rw test.log 
    #在ywx用户测试
    [ywx@node1 data]$ cat test.log 
    ni hao
    [ywx@node1 data]$ echo 111 >> test.log 
    [ywx@node1 data]$ cat test.log 
    ni hao
    111
    #ywx用户可以读写该文件
    [root@node1 data]# getfacl test.log 
    # file: test.log
    # owner: root
    # group: root
    user::rw-
    user:ywx:rw-   #ywx用户有rw权限
    group::---
    mask::rw-
    other::---
    #清楚test.log的acl
    [root@node1 data]# setfacl -b test.log 
    [root@node1 data]# getfacl test.log 
    # file: test.log
    # owner: root
    # group: root
    user::rw-
    group::---
    other::---

    --set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以

    setfacl --set u::rw,u:wang:rw,g::r,o::- file1

    备份和还原ACL

    主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息

    #备份ACL
    getfacl -R /tmp/dir > acl.txt
    #消除ACL权限
    setfacl -R -b /tmp/dir
    #还原ACL权限
    setfacl -R  --set-file=acl.txt /tmp/dir
    #还原ACL权限
    setfacl --restore acl.txt
    #查看ACL权限
    getfacl -R /tmp/dir
    [root@centos8 data]#getfacl *
    # file: f1.txt
    # owner: root
    # group: root
    user::rw-
    user:wang:rwx     #effective:rw￾group::r--
    group:admins:-w-
    mask::rw-
    other::r--
    # file: f2.txt
    # owner: root
    # group: root
    user::rw-
    group::r--
    other::r--
    # file: f3.txt
    # owner: root
    # group: root
    user::rw-
    user:wang:rwx #effective:rw-
    group::r--
    group:admins:-w-
    mask::rw-
    other::r--
    [root@centos8 data]#cd 
    [root@centos8 ~]#tar cvf data.tar /data/
    tar: Removing leading `/' from member names
    /data/
    /data/f1.txt
    /data/f2.txt
    /data/f3.txt
    [root@centos8 ~]#tar xvf data.tar -C /opt
    data/
    data/f1.txt
    data/f2.txt
    data/f3.txt
    [root@centos8 ~]#ls /opt
    data
    [root@centos8 ~]#cd /opt/data
    [root@centos8 data]#ll
    total 12
    -rw-rw-r-- 1 root root 728 Dec 18 14:51 f1.txt
    -rw-r--r-- 1 root root 728 Dec 18 15:01 f2.txt
    -rw-rw-r-- 1 root root 728 Dec 18 14:51 f3.txt
    [root@centos8 data]#getfacl -R /data > /root/acl.txt
    getfacl: Removing leading '/' from absolute path names
    [root@centos8 data]#cat /root/acl.txt
    # file: data
    # owner: root
    # group: admins
    user::rwx
    group::rwx
    other::rwx
    # file: data/f1.txt
    # owner: root
    # group: root
    user::rw￾user:wang:rwx #effective:rw￾group::r--
    group:admins:-w￾mask::rw￾other::r--
    # file: data/f2.txt
    # owner: root
    # group: root
    user::rw￾group::r--
    other::r--
    # file: data/f3.txt
    # owner: root
    # group: root
    user::rw￾user:wang:rwx #effective:rw-
    group::r--
    group:admins:-wmask::rwother::r--
    [root@centos8 data]#ll /opt/data
    total 12
    -rw-rw-r-- 1 root root 728 Dec 18 14:51 f1.txt
    -rw-r--r-- 1 root root 728 Dec 18 15:01 f2.txt
    -rw-rw-r-- 1 root root 728 Dec 18 14:51 f3.txt
    [root@centos8 data]#cd 
    [root@centos8 ~]#setfacl -R --set-file=/root/acl.txt /opt
    [root@centos8 ~]#ll /opt/data/
    total 12
    -rw-rw-r--+ 1 root root 728 Dec 18 14:51 f1.txt
    -rw-rw-r--+ 1 root root 728 Dec 18 15:01 f2.txt
    -rw-rw-r--+ 1 root root 728 Dec 18 14:51 f3.txt
    [root@centos8 ~]#setfacl -b -R /opt/data
    [root@centos8 ~]#ll /opt/data
    total 12
    -rw-r--r-- 1 root root 728 Dec 18 14:51 f1.txt
    -rw-r--r-- 1 root root 728 Dec 18 15:01 f2.txt
    -rw-r--r-- 1 root root 728 Dec 18 14:51 f3.txt
    I have a dream so I study hard!!!
  • 相关阅读:
    Seaborn基础3
    【C语言】将输入的10个整数逆序输出
    【C语言】(数组方式)输出一组成绩中的最高分与最低分
    【C语言】(数组方式)求n名同学的平均成绩
    【C语言】编写程序,输出以下图形
    【C语言】输入一个年份和月份,输出该月的天数
    【C语言】输入圆的半径,求解圆的周长和面积
    Draw.io--自认为最好用的流程图绘制软件
    【C语言】极坐标转换为直角坐标
    【C语言】计算N名同学的某门功课的平均成绩
  • 原文地址:https://www.cnblogs.com/yaokaka/p/13735297.html
Copyright © 2020-2023  润新知