zoukankan      html  css  js  c++  java
  • Linux文件系统访问控制列表(FACL)

    FACL:Filesystem Acess Control List

    Linux(和其他Unix等POSIX兼容的操作系统)有一种被称为访问控制列表(ACL)的权限控制方法,它是一种权限分配之外的普遍范式。例 如,默认情况下你需要确认3个权限组:owner、group和other。而使用ACL,利用文件扩展属性保存额外的访问控制权限,你可以增加权限给其他用户或组别,而不单只是简单 的"other"或者是拥有者不存在的组别。可以允许指定的用户A、B、C拥有写权限而不再是让他们整个组拥有写权限。

    ACL支持多种Linux文件系统,包括ext2, ext3, ext4, XFS, Btfrs, 等。如果你不确定你的文件系统是否支持ACL,请参考文档。

    场景:Tom,Jerry两个用户,Tom在一个公共目录创建一个文件,只希望Jerry也可以访问,并能够编辑修改保存。用户之间文件共享。

    安装acl管理工具

    CentOS/Fedora/RHEL 中:

    yum install acl

    Ubuntu/Debian 中:

    sudo apt-get install acl

    安装ACL完成后,需要激活我们磁盘分区的ACL功能,这样我们才能使用它。

    首先,我们检查ACL功能是否已经开启。

    vim /etc/fstab

    查看到/ /boot均没有开启ACL功能,在需要开启ACL的分区的选项前增加acl标记。

    eg.

    基础ACL通过两条命令管理:setfacl用于增加或者修改ACL,getfacl用于显示分配完的ACL。

    getfacl

    [root@RedHat tmp]# cp /etc/inittab .
    [root@RedHat tmp]# ls
    inittab  project  test
    [root@RedHat tmp]# getfacl inittab
    # file: inittab
    # owner: root
    # group: root
    user::rw-
    group::r--
    other::r--

    setfacl
      -m: 设定
        u:UID:perm 
        g:GID:perm

        d:u:UID:perm  
        d:g:GID:perm

          为某一个目录设置默认的访问控制列表。意味着在这个目录下新建的文件将自动继承目录的访问控制列表权限。
        setfacl -m u:hadoop:rw inittab
      -x:取消
        u:UID
        g:GID
        setfacl -x u:hadoop inittab

      --mask:

    在hadoop用户下
    [hadoop@RedHat tmp]$ echo 123 >> inittab
    -bash: inittab: Permission denied
    
    在root用户下
    [root@RedHat tmp]# setfacl -m u:hadoop:rw inittab
    [root@RedHat tmp]# getfacl inittab
    # file: inittab
    # owner: root
    # group: root
    user::rw-
    user:hadoop:rw-
    group::r--
    mask::rw-
    other::r--
    
    添加acl权限后

     -rw-rw-r--+ 1 root root 495 7月 26 19:06 inittab

    在hadoop用户下
    [hadoop@RedHat tmp]$ echo 123 >> inittab
    [hadoop@RedHat tmp]$ tail -3 inittab
    # ln -sf /lib/systemd/system/<target name>.target /etc/systemd/system/default.target
    #
    123

    让developteam组中的所有用户对testfile有读写权限

    [root@RedHat tmp]# mkdir testfile
    [root@RedHat tmp]# getfacl testfile
    # file: testfile
    # owner: root
    # group: root
    user::rwx
    group::r-x
    other::r-x
    
    [root@RedHat tmp]# setfacl -m g:developteam:rw testfile
    [root@RedHat tmp]# getfacl testfile/
    # file: testfile/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    group:developteam:rw-
    mask::rwx
    other::r-x

    用户访问文件 权限应用次序 用户进程匹配如下:
    owner --> group--> other
    owner --> facl,user --> group --> facl,group --> other

  • 相关阅读:
    OpenCVPython系列之相机校准
    matplotlib的使用——坐标轴设置部分
    nvcc fatal : Unsupported gpu architecture ‘compute_30‘
    ubuntu中aptget install 改用阿里云作为数据源
    OpenCVPython系列之稠密光流
    OpenCVPython系列之Camshift算法
    安装cudnn
    OpenCVPython系列之相机校准实践
    matplotlib的使用——legend图例的设置
    matplotlib的使用——picture in picture画中画的使用
  • 原文地址:https://www.cnblogs.com/chrisDuan/p/4677408.html
Copyright © 2011-2022 走看看