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

  • 相关阅读:
    Android SDK Platforms
    Maven实战(五)坐标详解
    JSTL 核心标签库 使用
    在eclipse上安装Aptana插件
    jquery replace字符串全部替换
    Oracle笔记(四) 简单查询、限定查询、数据的排序
    Oracle笔记(三) Scott用户的表结构
    Oracle笔记(二) SQLPlus命令
    Oracle笔记(一) Oracle简介及安装
    Oracle笔记(六) 多表查询
  • 原文地址:https://www.cnblogs.com/m97i/p/10718092.html
Copyright © 2011-2022 走看看