zoukankan      html  css  js  c++  java
  • RHEL6基础四十九之RHEL文件(夹)权限进阶篇

    ACL权限管理

    ACL(Access Control List,访问控制列表)主要是提供传统的owner,group,others的read,write,execute权限之外的具体权限设置,ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。

    例①:目录 /home/acl 的权限为:drwxr-x---,所有者与所属组均为 root,在不改变所有者的前提下,只要求other组的用户justin 对该目录有完全访问权限 (rwx)(justin不属于 root group)
    (1) 对于/home/acl目录来说justin用户属于other组,如果给 /home/acl的 other 组增加 rwx 权限,这样所有other组成员都拥有了rwx权限。
    (2) 如果将 justin 加入到 root 组,为 root 组分配 rwx 权限,显然和题意不符。

    为了解决这个问题需要使用ACL的功能,ACL 可以设置特定用户或者用户组对于一个文件的操作权限

    ACL权限管理

    Setfacl:设置某个文件/目录的ACL设置项目

    Getfacl:取得某个文件/目录的ACL设置项目

    说明:ACL 有两种,一种是存取 ACL (access ACLs),针对文件和目录设置访问控制列表。一种是默认ACL(default ACLs),只能针对目录设置。如果目录中的文件没有设置ACL,它就会使用该目录的默认 ACL.

    参数 功能 参数 功能
    -m 修改文件(夹)当前的ACL设置 -x 删除文件(夹)的ACL设置
    -M 读取文件(夹)修改的ACL设置 -X 读取删除的文件(夹)ACL设置
    -b 删除所有的ACL设置 -R 递归设置ACL
    -k 删除默认的ACL设置 -d 设置默认的ACL

    wKioOVLCdK2g6U1sAADf4x64hEo426.jpg

    注意:除了对用户、组进行设置外还可以对有效权限(mask)进行设置,用户或组所设置的权限必须要存在于mask的权限设置范围内才会生效

    上面的例①可以如下操作:

    wKioOVLCdjHienLsAACXxlz3Jz8766.jpg


           SetUID SetGID 粘滞位(sticky位)

    权限 功能
    SetUID

    使用户具有文件所有者的权限.。SetUID只会出现在二进制文件中,目录中存在将没有意义。当其它用户使用带用Setuid标识的命令时,自己对此命令也必需有X(执行)的权限

    SetGID 设置用户具有该目录所属组的权限。该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.
    粘滞位 粘滞位主要是为公共目录(例如权限为777的)设置,作用是用户不能删除该目录中其他用户的文件(root用户除外)。sticky只对文件有效

    文件(夹)的权限实际上是由4位8进制数字表示,这4位数字由SetUID+SetGID+粘滞位、属主、属组、其他用户组成,SetUID、SetGID、粘滞位(sticky位)分别用数字4、2、1表示,设置后, 可以用 ls -l 来查看. 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T),赋予SetUID权限chmod命令:chmod 4xxx file(s)或chmod u+s file(s),撤销SetUID权限:chmod xxx file(s)或chmod u-s file(s)

    例:1、以SetUID为例:

    wKiom1LGb73AYEZfAADS2vqIk80276.jpg

    2、在/home/sticky目录中任何用户都可以创建文件或目录,但只有用户自身和root用户可以删除用户所创建的文件或目录。

    wKioL1LGb7DzpsUXAAEWHQdYAq0260.jpg


    chattr与lsattr命令

    这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

    chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…

    + :在原有参数设定基础上,追加参数。+ :在原有参数设定基础上,追加参数。
    - :在原有参数设定基础上,移除参数。
    = :更新为指定参数设定。
    A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
    S:硬盘I/O同步选项,功能类似sync。
    a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
    c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
    d:即no dump,设定文件不能成为dump程序的备份目标。
    i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
    j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
    s:保密性地删除文件或目录,即硬盘空间被全部收回。
    u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。
    各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。

    用chattr命令防止系统中某个关键文件被修改

    1
    2
    3
    4
    5
    6
    [root@justin ~]# lsattr /etc/resolv.conf
    -------------e- /etc/resolv.conf
    [root@justin ~]# chattr +i /etc/resolv.conf
    [root@justin ~]# lsattr /etc/resolv.conf
    ----i--------e- /etc/resolv.conf
    [root@justin ~]# vim /etc/resolv.conf

    wKiom1N0eC6xJQOfAAEL_dsuTZ8845.jpg

    让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件

    1
    [root@justin ~]# chattr +a /var/log/messages
  • 相关阅读:
    经典小程序源码及其下载地址
    基于cropper.js的图片上传和裁剪
    【组件】微信小程序input搜索框的实现
    如何打造个人技术影响力
    一位90后程序员的自述:如何从年薪3w到30w!
    状态模式(State)(开关灯,状态实例为类,不同状态,不同行为)
    责任链模式(Chain of Responsibility、Handler)(请求处理建立链)
    java中创建对象的五种方法
    PrintWrite
    观察者模式(Observer、Subject、ConcreteSubject、ConcreteObserver)(监护、订阅)
  • 原文地址:https://www.cnblogs.com/studio313/p/6291846.html
Copyright © 2011-2022 走看看