zoukankan      html  css  js  c++  java
  • ACL权限以及Linux对权限的判断顺序

    ACL权限

    ACL权限是对UGO权限的扩展。基本UGO权限将文件的作用目标分为三类,其中O这一类包含的用户太笼统,如果我们想单独设置某个用户或某个组对文件的某种权限,则可使用ACL(Access Control List)。

    ACL可以针对单一用户、单一组、单一文件或目录来进行r、w、x的权限控制。

    CentOS 7默认支持ACL,Centos6及以前系统可能需要手动开启。

    获取文件的权限信息:

    getfacl命令

    会显示基本权限信息以及ACL权限。

    [chirou@duorou ~ ]$ getfacl demo/
    # file: demo/		# 文件名
    # owner: chirou		# 属主
    # group: chirou		# 属组
    user::rwx			# 属主权限
    group::rwx			# 属组权限
    other::r-x			# 其他人权限
    user:libai:rwx		# 针对李白用户所设定的权限
    

    设置ACL权限

    setfacl命令

    • -m:设置权限
    • -R:递归设置
    • -x:删除单个权限
    • -b:删除所有ACL权限
    注:对用户和组设置ACL权限时,用户和组必须事先存在。
    # 修改属主的权限
    setfacl -m u::权限 /PATH/File
    
    # 修改属组的权限
    setfacl -m g::权限 /PATH/File
    
    # 修改其他人的权限
    setfacl -m o::权限 /PATH/File
    
    # 修改具体某一个用户的权限
    setfacl -m u:用户名:权限 /PATH/File
    
    # 修改具体某一个组的权限
    setfacl -m g:组名:权限 /PATH/File
    
    # 删除某个组的权限
    setfacl -x g:group /PATH/File
    
    # 删除某个用户的权限
    setfacl -x u:user /PATH/File
    
    # 删除所有ACL权限
    setfacl -b /PATH/File
    
    # 递归设置目录内所有文件,注意-R选项要在设置的权限后面。
    setfacl -m u:用户名:权限 -R /PATH/File
    
    # 设置mask值
    setfacl -m m:rwx /PATH/File
    
    • default:继承/默认,设定继承权限后,在该目录内创建文件,会继承目录的ACL权限。对已存在的文件没有影响。default只会对设置的权限有效,设置继承权限后再更改目录的权限不会对继承权限有影响。
    # 设置某文件的继承权限,在原设置ACL权限前面加上d:即可
    setfacl -m d:u:user:r /PATH/File
    
    # 设置继承权限panghu用户对目录有读权限
    [chirou@duorou ~ ]$ setfacl -m d:u:panghu:r demo/
    [chirou@duorou ~ ]$ getfacl demo/
    # file: demo/
    # owner: chirou
    # group: chirou
    user::rwx
    group::rwx
    other::r-x
    default:user::rwx
    default:user:panghu:r--
    default:group::rwx
    default:mask::rwx
    default:other::r-x
    
    # 修改其他人的权限后,default权限不会变化
    [chirou@duorou ~ ]$ setfacl -m o::rwx demo/
    [chirou@duorou ~ ]$ getfacl demo/
    # file: demo/
    # owner: chirou
    # group: chirou
    user::rwx
    group::rwx
    other::rwx
    default:user::rwx
    default:user:panghu:r--
    default:group::rwx
    default:mask::rwx
    default:other::r-x
    
    # 新建的目录会继承权限。
    [chirou@duorou ~ ]$ mkdir demo/d1/d2 ; getfacl demo/d1/d2
    # file: demo/d1/d2
    # owner: chirou
    # group: chirou
    user::rwx
    user:panghu:r--
    user:libai:rwx
    group::rwx
    mask::rwx
    other::r-x
    default:user::rwx
    default:user:panghu:r--
    default:user:libai:rwx
    default:group::rwx
    default:mask::rwx
    default:other::r-x
    
    # 删除某个继承权限
    [chirou@duorou ~ ]$ setfacl -x d:u:panghu demo/
    
    建议:为了方便管理文件权限,应将其他人的权限设置为空。
    chmod o=- /PATH/File
    

    mask值:

    mask值能限制最大权限,除了属主和other不受影响,其他用户(包括属组、单独设置的某个组、单独设置的某个用户)都需要与mask值进行按位与运算之后得出的结果才是最后真正生效的值。

    如果先设置mask值,再使用chmod修改权限或setfacl修改某个用户或组的权限,mask值也会发生改变。所以用了ACL设置权限后,不要用chmod改变权限,会影响已设置的ACL权限和mask值。

    当设置了ACL之后,原来显示的属组权限,会变成mask权限。

    注:一般而言不用更改mask权限,只要赋予mask最大权限(rwx),则给用户或群组设定的ACL权限本身就是有效的。

    设置了ACL权限的文件会在基础权限后面显示一个加号。

    ACL权限对root无效。
    # 将root对demo目录的权限置空。
    [chirou@duorou ~ ]$ setfacl -m u:root:- demo/
    
    # root一样能进入目录并删除文件。
    [root@duorou chirou ]# cd demo/
    [root@duorou demo ]# getfacl .
    # file: .
    # owner: chirou
    # group: chirou
    user::rwx
    user:root:---
    group::rwx
    mask::rwx
    other::r-x
    
    [root@duorou demo ]# ls
    d1  d2  d3  f1  fff
    [root@duorou demo ]# rm -rf fff
    

    系统判断权限顺序

    • 1、首先判断用户是否是属主,如果是则以属主的权限为准,如果不是则往下判断。
    • 2、判断用户是否有ACL权限,如果有则以ACL权限effective为准,如果effective为空,则继续往下判断。
    • 3、判断用户是否属于属组,如果属于则以属组权限为准,如果不是则往下判断。
    • 4、用户既不是属主或属组成员,effective权限也为空,那么就会以other的权限为准。
    [chirou@duorou ~ ]$ setfacl -m u:libai:r demo/
    # 使用mask将libai用户的权限置空
    [chirou@duorou ~ ]$ setfacl -m m:- demo/
    [chirou@duorou ~ ]$ getfacl demo/
    # file: demo/
    # owner: chirou
    # group: chirou
    user::rwx
    user:libai:r--			#effective:---
    group::rw-			#effective:---
    mask::---
    other::rw-
    
    # libai用户与ACL权限匹配为空,然后会再与other权限匹配,所以拥有对demo目录的读和写权限。
    [chirou@duorou ~ ]$ sudo -u libai ls /home/chirou/demo
    d1  f1
    [chirou@duorou ~ ]$ rm -rf /home/chirou/demo/f1 
    
  • 相关阅读:
    字符串转换整数 (atoi)
    Z 字形变换
    最长回文子串
    寻找两个有序数组的中位数
    二维码QRCode
    多个线程访问url
    store procedure 翻页
    store procedure example
    使用graphics2D给图片上画字符
    procedure的over(partition by ) function
  • 原文地址:https://www.cnblogs.com/ChiRou/p/13909149.html
Copyright © 2011-2022 走看看