• 1-9 RHEL7-文件权限管理


     

    本节所讲内容:

      文件的基本权限:r w x (UGO+ACL)

      文件的高级权限:suid sgid sticky

    第1章 文件的基本权限

    1.1 权限的作用

    通过对文件设定权限可以达到以下三种访问限制权限:

    q  只允许用户自己访问;

    q  允许一个预先指定的用户组中的用户访问;

    q  允许系统中的任何用户访问。

    1.2 查看文件权限

    我们可以通过ls命令来查看一个文件的具体信息,加参数 –l 可以查看这个文件的权限信息

    [root@panda mnt]# ls

    [root@panda mnt]# touch a.txt

    [root@panda mnt]# ll a.txt

    -rw-r--r-- 1 root root 0 Dec  5 20:37 a.txt

    [root@panda mnt]# ls -l a.txt

    -rw-r--r-- 1 root root 0 Dec  5 20:37 a.txt

    [root@panda ~]# ll

    total 8

    -rw-------. 1 root root 1572 Jul 28 06:40 anaconda-ks.cfg

    drwxr-xr-x. 2 root root    6 Jan  1  2017 Desktop

    drwxr-xr-x. 2 root root    6 Jan  1  2017 Documents

    drwxr-xr-x. 2 root root    6 Jan  1  2017 Downloads

    -rw-------. 1 root root 1726 Jul 27 23:13 initial-setup-ks.cfg

    drwxr-xr-x. 2 root root    6 Jan  1  2017 Music

    drwxr-xr-x. 2 root root    6 Jan  1  2017 Pictures

    drwxr-xr-x. 2 root root    6 Jan  1  2017 Public

    drwxr-xr-x. 2 root root    6 Jan  1  2017 Templates

    drwxr-xr-x. 2 root root    6 Jan  1  2017 Videos

    [root@panda mnt]# stat -c %a a.txt

    644

    [root@panda mnt]# stat -c %A a.txt

    -rw-r--r—

    [root@panda ~]# getfacl /etc/hosts

    getfacl: Removing leading '/' from absolute path names

    # file: etc/hosts

    # owner: root

    # group: root

    user::rw-

    group::r--

    other::r--

    文件权限基本解释:

    -

    rwx

    r-x

    r-x

    user1

    user1

    time

    FILENAME

    文件类型

    拥有者的权限

    所属组的权限

    其他人的权限

    拥有者

    属组

    最后修改时间

    对象

     

    其中:文件类型,可以为p、d、l、s、c、b和 –

    q  p表示命名管道文件

    q  d表示目录文件

    q  l表示符号连接文件

    q  -表示普通文件

    q  s表示socket套接口文件,比如我们启用mysql时,会产生一个mysql.sock文件

    q  c表示字符设备文件

    q  b表示块设备文件

    linux中文件扩展名

         windows里通过扩展名来区分文件类型的。linux里文件扩展名和文件类型没有关系。但为了容易区分和兼容用户使用windows的习惯,我们还是会用扩展名来表示文件类型。举例如下:

    l  源码.tar、.tar.gz、.tgz、.zip、.tar.bz表示压缩文件,创建命令一般为tar,gzip,zip等。

    l  .sh表示shell脚本文件,通过shell语言开发的程序。

    l  .pl表示perl语言文件,通过perl语言开发的程序。

    l  .py表示python语言文件,通过python语言开发的程序。

    l  .html、.htm、.php、.jsp、.do表示网页语言的文件。

    l  .conf表示系统服务的配置文件。

    l  .rpm表示rpm安装包文件。

    例如:

    [root@panda mnt]# ll a.txt

    -rw-r-xr-- 1 root root 1 Dec  5 20:37 a.txt

           表示文件a.txt是普通文件,文件的所有者是root用户,而root用户属于root组,文件只有1个硬连接,长度是5个字节,最后修改时间12月5日20:37。

           所有者root对文件有读写执行权限,root组的成员对文件有读和执行权限,其他的用户对这个文件只有读的权限

    1.3 权限说明

    有三种权限可以应用:读取,写入与执行,这些权限对访问文件和目录的影响如下:

    权限

    对文件的影响

    对目录的影响

    r(读取)

    可以读取文件的内容

    可以列出目录的内容(文件名)

    w(写入)

    可以更改文件的内容

    可以创建或删除目录中的任意文件

    x(执行)

    可以作为命令执行文件

    可以访问目录的内容(取决于目录中文件的权限)

    对于文件:

    q  r:读  

    q  w:写  

    q  x:执行

    对于目录:

    q  r:读(看到目录里面有什么)     ls

    q  w:建文件、删除、移动                   touch   mkdir    rm   mv  cp

    q  x:进入                                         cd   cat

    具体说明:

           r (Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限.
           w (Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
           x (execute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
           -:表示不具有该项权限

    结束:

           对于文件的所有者或者是属主, root可以将这些权限改变为任何它想指定的权限;

    例如:一个文件只有读权限,那么它就禁止任何普通用户对它的修改;如果文件只有执行权限,那么系统允许它像一个程序一样执行。

    1.4 文件拥有者

    所有者-用户组-其他用户

    所有者: 就是创建文件的用户,这个用户拥有对它所创建的文件的一切权限,所有者可以允许其所在的用户组可以访问所有者的文件。

    用户组: 用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组。

    其它用户:系统内的其他所有者用户就是other用户类

    1.5 举例说明

    1.5.1 常见几种文件权限组成

    u  -rwx------:文件所有者对文件具有读取、写入和执行的权限。

    u  -rwxr--r--: 文件所有者具有读、写与执行的权限,用户组里用户及其他用户则具有读取的权限

    u  -rw-rw-r-x:文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。

    u  drwx--x—x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。

    u  drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。

    1.5.2 举例如下:

    每个用户都拥有自己的专属目录,通常放置在/home目录下

     

    这些专属目录的默认权限为【rwx------】表示目录所有者本身具有所有权限,其他用户无法进入该目录,如下图所示:

     

    在当前用户状态下创建的文件或目录,自动成为该用户的所属

    1.5.2 更改文件的所有者和属组

    用到的命令:chown   chgrp  如果对目录操作,-R

    [root@panda ~]# ll /home/wang.txt

    -rw-r--r--. 1 root root 0 Apr  7 21:16 /home/wang.txt

    [root@panda ~]# chown :tom /home/wang.txt

    [root@panda ~]# ll /home/wang.txt

    -rw-r--r--. 1 root tom 0 Apr  7 21:16 /home/wang.txt

    [root@panda ~]# ll /home/*.txt

    -rw-r--r--. 1 root tom  0 Apr  7 21:16 /home/wang.txt

    -rw-r--r--. 1 tom  root 0 Apr  7 21:15 /home/yang.txt

    [root@panda ~]# touch /home/li.txt

    [root@panda ~]# chown jerry:jerry /home/li.txt

    [root@panda ~]# ll /home/*.txt

    -rw-r--r--. 1 jerry jerry 0 Apr  7 21:16 /home/li.txt

    -rw-r--r--. 1 root  tom   0 Apr  7 21:16 /home/wang.txt

    -rw-r--r--. 1 tom   root  0 Apr  7 21:15 /home/yang.txt

    [root@panda ~]# chown .tom /home/li.txt

    [root@panda ~]# ll /home/*.txt

    -rw-r--r--. 1 jerry tom  0 Apr  7 21:16 /home/li.txt

    -rw-r--r--. 1 root  tom  0 Apr  7 21:16 /home/wang.txt

    -rw-r--r--. 1 tom   root 0 Apr  7 21:15 /home/yang.txt

    [root@panda ~]# chgrp tom /home/yang.txt

    [root@panda ~]# mkdir /home/dir1

    [root@panda ~]# touch /home/dir1/test-{01..10}

    [root@panda ~]# ls /home/dir1

    test-01  test-02  test-03  test-04  test-05  test-06  test-07  test-08  test-09  test-10

    [root@panda ~]# chown -R tom /home/dir1d

    chown: cannot access ‘/home/dir1d’: No such file or directory

    [root@panda ~]# chown -R tom /home/dir1

    [root@panda ~]# ll /home/dir1

    total 0

    -rw-r--r--. 1 tom root 0 Apr  7 21:20 test-01

    -rw-r--r--. 1 tom root 0 Apr  7 21:20 test-02

    -rw-r--r--. 1 tom root 0 Apr  7 21:20 test-03

    -rw-r--r--. 1 tom root 0 Apr  7 21:20 test-04

    -rw-r--r--. 1 tom root 0 Apr  7 21:20 test-05

    -rw-r--r--. 1 tom root 0 Apr  7 21:20 test-06

    -rw-r--r--. 1 tom root 0 Apr  7 21:20 test-07

    -rw-r--r--. 1 tom root 0 Apr  7 21:20 test-08

    -rw-r--r--. 1 tom root 0 Apr  7 21:20 test-09

    -rw-r--r--. 1 tom root 0 Apr  7 21:20 test-10

    1.6 修改权限

    修改权限的相关命令:chmod

    作用:修改文件、目录权限

    用法:(中间的+、-、=表示添加还是删除该用户的对应权限)

           u-w

    user

    拥有者

    g+x

    group

    o=r

    other

    其他人

    a+x

    all

    所有人

    1.6.1 对文件权限的修改

    删除文件的写权限

    [root@panda mnt]# chmod u-w a.txt

    [root@panda mnt]# ll

    total 0

    -r--r--r-- 1 root root 0 Dec  5 20:37 a.txt

    让所有者所在的组用户拥有执行的权限

    [root@panda san]# ll

    total 0

    drwxr-xr-x 2 san admin 6 Dec  5 21:04 aa

    -rw-r--r-- 1 san admin 0 Dec  5 21:04 b.txt

    [root@panda san]# chmod g+x b.txt

    [root@panda san]# ll

    total 0

    drwxr-xr-x 2 san admin 6 Dec  5 21:04 aa

    -rw-r-xr-- 1 san admin 0 Dec  5 21:04 b.txt

    删除其它用户对文件的读权限

    [root@panda san]# chmod o-r b.txt

    [root@panda san]# ll

    total 0

    drwxr-xr-x 2 san admin 6 Dec  5 21:04 aa

    -rw-r-x--- 1 san admin 0 Dec  5 21:04 b.txt

    [root@panda san]# chmod o+rwx b.txt

    [root@panda san]# ll

    total 0

    drwxr-xr-x 2 san admin 6 Dec  5 21:04 aa

    -rw-r-xrwx 1 san admin 0 Dec  5 21:04 b.txt

    ======================================================

    chmod u+x file1 //属主增加执行
    chmod a=rwx file1 //所有人等于读写执行
    chmod a=- file1 //所有人没有权限
    chmod ug=rw,o=r file1 //属主属组等于读写,其他人只读
     ll file1 //以长模式方式查看文件权限
    =======================================================

    1.6.2 对目录的权限修改

     

    1.6.3 一次修改多个权限

     

    1.7 修改文件的拥有者及所属组

    用到的命令:chown

    作用:修改文件拥有者和所属组

    语法:

    q  chown user:group 对象

    q  chown user 对象

    q  chown :group 对象

    q  -R :递归(目录下的所有内容全部更改,否则只修改目录)

    举例如下:

    修改文件的所有者和所属组

     

    修改文件的所有者

     

    修改文件的所属组

     

    给目录及其里面的文件赋权

    在目录下新建两个文件

     

    扩展:

    如果一个文件只有读的权限,拥有者是否可以写入文件内容呢?

    [root@panda mnt]# ll

    total 0

    -rwxr--r-- 1 miao root   0 Dec  5 20:37 a.txt

    dr-xr-xr-x 2 san  admin 30 Dec  5 21:22 bb

    [root@panda mnt]# chmod u-wx a.txt

    [root@panda mnt]# ll a.txt

    -r--r--r-- 1 miao root 0 Dec  5 20:37 a.txt

    [root@panda mnt]# su - miao

    Last login: Mon Dec  5 20:13:44 CST 2016 on pts/0

    [miao@panda ~]$ cd /mnt

    [miao@panda mnt]$ ls

    a.txt  bb

    [miao@panda mnt]$ ll

    total 0

    -r--r--r-- 1 miao root   0 Dec  5 20:37 a.txt

    dr-xr-xr-x 2 san  admin 30 Dec  5 21:22 bb

    [miao@panda mnt]$ vim a.txt

    [miao@panda mnt]$ cat a.txt

    nihao

    [miao@panda mnt]$ exit

    logout

    1.8 使用数字表示权限

    rwx

    r--

    -w-

    --x

     

    100

    010

    001

    二进制

    4

    2

    1

    十进制

    组合

    rw-

    4+2=6

    r-x

    4+1=5

    rw-r--r--

    rw-=6     r--=4    r--=4    rw-r—r--=644

    举例如下:

    建一个目录TEST,要求如下:

    1、root用户和test用户可以读写执行

    2、其他用户没有任何权限

    1.9 综合案例

    建立两个用户组group1和group2,再建立三个用户 user1、user2、user3,并且把前两个用户分配给组group1,最后一个用户分给组group2

    实验1:用户1和2都属一个组,在1下创建一个文件,2可以访问查看吗?写入这个文件内容,绝对路径看能查看到里面内容吗?

    实验2:如果不能访问,有几种方法设置可以让2访问?

    方法:修改用户的目录组权限,让它允许同组用户访问,其它用户不可以

    [root@panda home]# su - user3

    [user3@panda ~]$ ls /home/user1

    ls: cannot open directory /home/user1: Permission denied

    实验3:如何让用户3可以访问用户1的文件,但是不能修改用户3的主组

    第一种:在user1目录的其它权限位置给一个权限

    第二种情况:自己下来测试一下附加组

    =======================================

    1、权限对文件的影响

    [root@panda home]# ll dir1/test-01

    -rwxrwxrwx. 1 root root 0 Apr  7 21:20 dir1/test-01

    [root@panda home]# ll -d dir1

    drwxr-xr-x. 2 root root 4096 Apr  7 21:20 dir1

    [root@panda home]# su - tom

    Last login: Fri Apr  7 21:31:29 CST 2017 on pts/0

    [tom@panda ~]$ exit

    logout

    [root@panda home]# su - tom

    Last login: Fri Apr  7 21:51:05 CST 2017 on pts/0

    [tom@panda ~]$ cat /home/dir1/test-01

    [tom@panda ~]$ rm -f /home/dir1/test-01

    rm: cannot remove ‘/home/dir1/test-01’: Permission denied

    2、权限对目录的影响

    [root@panda home]# ll -d dir1/

    drwxr-xr-x. 2 root root 4096 Apr  7 21:20 dir1/

    [root@panda home]# chmod 777 dir1/

    [root@panda home]# ll -d dir1/

    drwxrwxrwx. 2 root root 4096 Apr  7 21:20 dir1/

    [root@panda home]# chmod 000 dir1/test-01

    [root@panda home]# ll dir1/test-01

    ----------. 1 root root 0 Apr  7 21:20 dir1/test-01

    [root@panda home]# su - tom

    Last login: Fri Apr  7 21:51:19 CST 2017 on pts/0

    [tom@panda ~]$ cat /home/dir1/test-01

    cat: /home/dir1/test-01: Permission denied

    [tom@panda ~]$ rm -f /home/dir1/test-01

    [tom@panda ~]$ touch /home/dir1/test-001

     

    1.10 补码

    首先看一个例子:

     

    为什么我们创建的文件的权限是644呢?

    我们创建文件的默认权限是怎么来的?

    如何改变这个默认权限呢?

           umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字

           对于文件来说,这一数字的最大值分别是6;系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限(为了安全考虑)

    4 2 

           对于目录来说,则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7

    umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反.;umask设置的是权限“补码”,而chmod设置的是文件权限码。我们只要记住umask是从权限中拿走相应的位即可 。如:umask值为022,则默认目录权限为755,默认文件权限为644

    该命令的一般形式为:umask nnn 其中nnn为umask值000 – 777

    umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反.;umask设置的是权限“补码”,而chmod设置的是文件权限码。我们只要记住umask是从权限中拿走相应的位即可 。如:umask值为022,则默认目录权限为755,默认文件权限为644

           我们一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。

     

    计算方法:

    文件默认权限=666-umask值   666-022=644

    目录默认权限=777-umask 值  777-022=755

    Umask表示的是要减掉的权限

    永久生效,编辑用户的配置文件vim .bash_profile

     

    第2章 特殊权限

           其实文件与目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些“特权”.

    因而用户若无特殊需求,不应该启用这些权限,避免安全方面出现严重漏洞,造成入侵,甚至摧毁系统!!!
    特殊权限:

    q  SUID(set uid设置用户ID):限定:只能设置在二进制可执行程序上面。对目录设置无效

              功能:程序运行时的权限从执行者变更成程序所有者

    q  SGID:限定:既可以给二进制可执行程序设置,也可以对目录设置

              功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会          继承上级目录的所属组

    q  Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位

    q  s对应的数值为

    SUID

    SGID

    Stickybit

    u=4、u+s

    g=2、g+s

    o=1、o+t

    SUID属性一般用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的所有者权限。使用”ls -l” 或者”ll” 命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的”s”,就表明该执行文件拥有SUID属性。比如/usr/bin/passwd文件

     

    注意:

           1、如果一个文件被设置了SUID或SGID位,会分别表现在所有者或同组用户的权限的可执行位上;

           2、linux系统规定,如果原本该位上有x,则这些属性显示为小写字母(有效),否则显示大写字母(无效)

           3、由于SUID和SGID是在执行程序(程序的可执行位被设置)时起作用,而可执行位只对普通文件和目录文件有意义,所以设置其他种类文件的SUID和SGID位是没有多大意义的

    2.1.1  SUID举例如下

           1、我们可以看到/etc/shadow文件是没有权限的。除了root用户可以操作,其它用户都不可以。但是因为passwd命令具有s特殊权限,所以我们切换到普通用户后,修改普通用户密码,它是可以把信息写入到这个密码文件里面的

    1、我们可以看到/etc/shadow文件是没有权限的。除了root用户可以操作,其它用户都不可以。但是因为passwd命令具有s特殊权限,所以我们切换到普通用户后,修改普通用户密码,它是可以把信息写入到这个密码文件里面的

     

     

    2、看下面的例子,可以看到cat命令是没有s特殊权限的,我们在普通用户下看密码文件,提示没有权限,如果我们在root用户下,确是可以执行的,给cat命令添加s权限,我们可以看到它是可以看到这个密码文件内容的

     

    其实我们是借用root用户的身份执行的         

    如果我们删除s权限后

     

    2.1.2  SGID举例如下

           s(SGID,Set GID):设置在文件上面,其效果与SUID相同,只不过将文件所有者换成用户组,该文件就可以任意存取整个用户组所能使用的系统资源。

    强调: SUID一般用在文件上(脚本) SGID用在目录上比较多

    [root@panda ~]# mkdir /tencent

    [root@panda ~]# groupadd xuegod

    [root@panda ~]# useradd -G xuegod xiaobai

    [root@panda ~]# useradd -G xuegod dabai

    [root@panda ~]#

    [root@panda ~]# chown :xuegod /tencent/

    [root@panda ~]# ll -d /tencent/

    drwxr-xr-x. 2 root xuegod 6 Oct 11 19:43 /tencent/

    [root@panda ~]# chmod 775 /tencent/

    [root@panda ~]# chmod g+s /tencent/

    [root@panda ~]# ll -d /tencent/

    drwxrwsr-x. 2 root xuegod 6 Oct 11 19:43 /tencent/

    切换到xiaobai用户下面:

    [root@panda ~]# su - xiaobai

    [xiaobai@panda ~]$ cd /tencent/

    [xiaobai@panda tencent]$ touch aa

    [xiaobai@panda tencent]$ touch bb

    [xiaobai@panda tencent]$ ll

    total 0

    -rw-rw-r--. 1 xiaobai xuegod 0 Oct 11 19:45 aa

    -rw-rw-r--. 1 xiaobai xuegod 0 Oct 11 19:45 bb

    [xiaobai@panda tencent]$ exit

    logout

    退出

    切换到dabai用户下面:

    [root@panda ~]# su - dabai

    [dabai@panda ~]$ cd /tencent/

    [dabai@panda tencent]$ touch cc

    [dabai@panda tencent]$ touch dd

    [dabai@panda tencent]$ ll

    total 0

    -rw-rw-r--. 1 xiaobai xuegod 0 Oct 11 19:45 aa

    -rw-rw-r--. 1 xiaobai xuegod 0 Oct 11 19:45 bb

    -rw-rw-r--. 1 dabai   xuegod 0 Oct 11 19:46 cc

    -rw-rw-r--. 1 dabai   xuegod 0 Oct 11 19:46 dd

           通过上面大家可以看到尽管用户变了,但是它的所属组是没有变的,因此别人在此目录中创建的任何目录和文件,所属组都是此目录的所属组,但是属主还是自己,但是任何人在此目录创建的文件,都可以被删除

    2.1.3  粘滞位举例如下:

    SBIT(Sticky):只针对目录有效,对文件无效,作用是防止别人删除掉对方的资料,防止用户自己的文件被别的用户误删除

    [root@panda ~]# mkdir /tencent

    [root@panda ~]# chmod 1777 /tencent/

    [root@panda ~]# su - test

    Last login: Tue Oct 11 20:12:57 CST 2016 on pts/2

    [test@panda ~]$ cd /tencent/

    [test@panda tencent]$ touch aa

    [test@panda tencent]$ touch bb

    [test@panda tencent]$ exit

    logout

    切换用户

    [root@panda ~]# su - xiaobai

    Last login: Tue Oct 11 20:11:14 CST 2016 on pts/2

    [xiaobai@panda ~]$ cd /tencent/

    [xiaobai@panda tencent]$ touch cc

    [xiaobai@panda tencent]$ touch dd

    [xiaobai@panda tencent]$ ll

    total 0

    -rw-rw-r--. 1 test    test    0 Oct 11 20:14 aa

    -rw-rw-r--. 1 test    test    0 Oct 11 20:14 bb

    -rw-rw-r--. 1 xiaobai xiaobai 0 Oct 11 20:14 cc

    -rw-rw-r--. 1 xiaobai xiaobai 0 Oct 11 20:14 dd

    [xiaobai@panda tencent]$ rm -f aa

    rm: cannot remove ‘aa’: Operation not permitted    --提示没有权限

    [xiaobai@panda tencent]$ exit

    logout

    这就是sticky位的功能

    2.1.4 扩展:ACL

           ACL: Access Control List (ACL)访问控制列表

           它是一种权限分配之外的普遍范式。例如,默认情况下你需要确认3个权限组:UGO。而使用ACL,你可以增加权限给其他用户或组别,而不单只是简单的"other"或者是拥有者不存在的组别。可以允许指定的用户A、B、C拥有写权限而不再是让他们整个组拥有写权限

    ACL使用情况:

    [root@panda mnt]# ll a.txt

    -rw-r--r-- 1 miao miao 0 Dec  5 22:36 a.txt

    如果我有一个用户san,想让它对文件a.txt有读写的权限,而其它用户不可以对这个文件有权限操作。有以几种情况:

    1、  给other权限,存在的问题就是让所有用户都对这个文件有读写,达不到我们的目的

    2、  把SAN用户加入一个组,存在的问题就是:如果miao组里还有其它重要的文件,那么这个时候san用户也可以来这里随意访问,有安全隐患

    3、  通过sudo。在普通用户状态下:通过sudo命令。存在的问题就是:你需要配置sudo文件,这个配置是有严格的格式要求。比较麻烦,也不灵活

    通过上面我们可以看:在LINUX中。因为对其它其它用户的权限定义过于宽泛,所以对用户权限细粒度的划分使用就比较麻烦,那么ACL就是用来解决这个问题的

    • 查看是否安装:

    [root@panda ~]# rpm -qf `which getfacl`

    acl-2.2.51-12.el7.x86_64

    [root@panda ~]# rpm -qf `which setfacl`

    acl-2.2.51-12.el7.x86_64

    • ACL参数解释

    Ÿ   ACL_USER_OBJ: 相当于Linux里file_owner的权限

    Ÿ   ACL_USER: 定义了额外的用户可以对此文件拥有的权限

    Ÿ   ACL_GROUP_OBJ: 相当于Linux里group的权限      

    Ÿ   ACL_GROUP: 定义了额外的组可以对此文件拥有的权限

    Ÿ   ACL_MASK: 定义了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限

    Ÿ   ACL_OTHER: 相当于Linux里other的权限

    举例如下:

    • 查看ACL权限

    [root@panda mnt]# getfacl a.txt

    # file: a.txt

    # owner: miao

    # group: miao

    user::rw-

    group::r--

    other::r--

    [root@panda mnt]# getfacl --omit-header a.txt

    user::rw-

    group::r--

    other::r—

    • 添加ACL权限

    [root@panda mnt]# setfacl -m u:san:rwx a.txt

    [root@panda mnt]# getfacl --omit-header a.txt

    user::rw-              --定义了ACL_USER_OBJ,说明文件拥有者有读写权限

    user:san:rw-                  --定义了ACL_USER,说明用户SAN也拥有了对此文件的读执行权限   

    group::r--             --定义了ACL_GROUP_OBJ,说明文件组拥有了读写权限

    mask::rw-                     --定义了ACL_MASK的权限为读写

    other::r—                          --定义了ACL+OTHER,说明其它用户对此文件没有任何操作权限

    • 删除ACL权限

    [root@panda mnt]# setfacl -b a.txt

    [root@panda mnt]# ll a.txt

    -rw-r--r-- 1 miao miao 0 Dec  5 22:36 a.txt

    [root@panda mnt]# getfacl a.txt

    # file: a.txt

    # owner: miao

    # group: miao

    user::rw-

    group::r--

    other::r—

    u  如果文件系统不支持ACL的话,你可能要重新挂载挂载一下你的文件系统

    用的命令:

    mount -o remount, acl [mount point]

    u  ACL中的MASK参数

    如果文件有ACL_MASK值,那么文件的组权限中显示的权限就是mask的值,而不是组的权限,同时在MASK中,mask规定的是最大权限,也就是说假如你添加了一个普通用户的ACL权限是rw,但是mask的值确是r。那么这个用户对这个文件也只有r权限。

    [root@panda mnt]# ll a.txt

    -rw-rwxr-- 1 miao miao 0 Dec  5 22:36 a.txt

    [root@panda mnt]# getfacl --omit-header a.txt

    user::rw-

    user:san:rwx-

    group::r--

    mask::rwx

    other::r—

    MASK的作用:它是用来临时的压制一些用户或者组的权限。尽量保证其它人权限设置为空

    setfact -m  -x  -b  -d

    ACL权限继承:

    第一种写法:

    [root@panda home]# setfacl -m u:jerry:rwx dir2/

    [root@panda home]# setfacl -m d:jerry:rwx dir2/

    第二种写法:

    [root@panda home]# setfacl -m d:u:tom:r dir-33/

    第3章: 实战:创建一个让root都无法删除的文件

           大家有时候发现用root权限都不能修改某个文件,这种情况大部分原因是因为用chattr命令锁定该文件了。

           文件系统属性权限:chattr(防止误操作包括root用户)

           chattr命令的作用很大,通过chattr命令修改文件属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。

           lsattr命令是显示chattr命令设置的文件属性

    Linux文件系统扩展属性:chattr  lsattr

    chattr [+ - =] 选项 对象

    +增加权限   -:删除权限     =:等于某个权限

    q  +a 

           对文件来说:只能在文件中追加数据,但现有数据不能删除也不能进行修改,用追加方式,vi无法判断你做的操作是属于哪种,所以不能用vi来编辑文件

           对目录来说:只允许在目录中建立和修改文件,但是不允许删除

    q  +i 

           对文件来说:不能修改,删除文件,也不能添加和修改其内的数据,但可以查看文件里面的内容

           对目录来说:只能修改目录下的文件数据,但不能建立和删除文件

    lsattr  可选参数 -a

    举例:

    对文件来说:

    创建一个新文件,并写入数据

    [root@xuegod72 mnt]# echo 'xuegod-linux' > b.txt

    [root@xuegod72 mnt]# cat b.txt

    xuegod-linux

    使用chattr添加a属性,让这个文件只能增加内容,不能修改内容

    [root@xuegod72 mnt]# chattr +a b.txt

    [root@xuegod72 mnt]# ll b.txt

    -----w----+ 1 root root 13 Oct 12 11:15 b.txt

    [root@xuegod72 mnt]# echo 123456 >> b.txt

    上面可以看到是可以增加内容的

    [root@xuegod72 mnt]# echo 78910 > b.txt

    -bash: b.txt: Operation not permitted    无法修改内容

    使用chattr添加i属性,让文件禁止任何人修改

    [root@xuegod72 mnt]# chattr +i b.txt

    [root@xuegod72 mnt]# echo 12345 >> b.txt

    -bash: b.txt: Permission denied    无法添加内容

    查看文件隐藏属性

    [root@xuegod72 mnt]# lsattr -a b.txt

    ----ia---------- b.txt

    删除添加的文件隐藏属性

    [root@xuegod72 mnt]# chattr -i b.txt

    [root@xuegod72 mnt]# chattr -a b.txt

    [root@xuegod72 mnt]# lsattr b.txt

    ---------------- b.txt

    实际应用:

    [root@ xuegod72 ~]# chattr +a /etc/passwd

    [root@l xuegod72 ~]# chattr +a /etc/shadow

    其它还能针对日志文件进行设置

  • 相关阅读:
    简单工厂模式、工厂模式、抽象工厂模式
    直接插入排序
    简单选择排序的陷阱
    面试3 题目二,不修改数组找到重复的数字
    二进制中1的个数(读不懂题目怎么办)
    用两个栈实现队列
    斐波那契数列
    替换空格
    python 实现杨辉三角(依旧遗留问题)
    递归实现二分查找
  • 原文地址:https://www.cnblogs.com/hailun1987/p/7747978.html
Copyright © 2020-2023  润新知