zoukankan      html  css  js  c++  java
  • 文件系统访问控制ACL设置

    1、传统Linux文件系统权限的问题

    传统Linux文件系统有三类用户:文件属主-u,组用户-g,其它用户-o,以及三种访问权限:读-r,写-w,执行或目录进入-x,但很多时候并不能满足对文件访问的细微控制,对组用户和其它用户的权限设置粒度比较粗。
    例如,对于文件A,除了文件属主,想让10个用户能够访问该文件,其它用户无法访问该文件,那么方法如下:1) 将能访问文件A的10个用户加入A的组g,赋予A的组访问权限;2) A的其它用户无访问权限。
    存在的问题是:在1)中,如果对10个组用户再细分,5个用户有rw权限,另外5个用户只有r权限,则无法做到,因为A的组用户只有一种权限。简而言之,在Linux中,一个文件或目录的访问权限最多分三种:属主,组,其它,不能满足多于3种的权限划分,这正是引入ACL的目的。

    2、ACL

    ACL 是 Access Control List 的缩写,主要的目的是在传统Linux文件系统权限基础上提供更细粒度的权限控制,可以针对单个用户、单个文件或目录进行 ,这对于需要比较复杂、特殊的权限设置是非常有用的。由於 ACL 是Unix-like 系统额外的支持项目,因此要使用 ACL必需要有文件系统的支持才行。 目前绝大部分的文件系统都有支援 ACL 的功能,包括 ReiserFS, EXT2/EXT3, JFS, XFS 等等。

    3、启动ACL

    [root@linux ~]# mount -o remount,acl /home
    [root@linux ~]# mount | grep /home
    /dev/hda5 on /home type ext3 (rw,acl)

    或者编辑/etc/fstab
    [root@linux ~]# vi /etc/fstab
    /dev/hda5 /home ext3 defaults,acl 1 2

    4、ACL设置

    $ setfacl                           //设定某文件或目录的ACL
    $ getfacl                           //取得某文件或目录的ACL设定值

    建立用户 test对project目录的使用权限(需要有 w):
    [cb@linux home]$ ls -ld project/
    drwx------ 2 cb cb 4.0K 10月 3 18:32 project

    [cb@linux home]$ setfacl -m u:test:rwx project

    [cb@linux home]$ getfacl project
    # file: project/
    # owner: cb
    # group: cb
    user::rwx
    user:test:rwx
    group::---
    mask::rwx
    other::---

    [cb@linux home]$ ls -ld project/
    drwxrwx---+ 2 cb cb 4096 10月 3 18:32 project    //多了一个+ 的标志,具体的权限得用getfacl来看,ugo的设置与实际有误差

    =-=-=-=-=
    Powered by Blogilo

  • 相关阅读:
    QT资料大全
    网络协议及tcp协议详解
    QT和Java的跨平台
    QString转char *
    QT删除整个文件夹
    QT获取linux下的当前用户名
    std::map自定义类型key
    QT程序自启动
    linux下通过命令连接wifi
    Rsync实现文件的同步
  • 原文地址:https://www.cnblogs.com/pandachen/p/7624287.html
Copyright © 2011-2022 走看看