ACL权限用途及其优势

普通权限用途

在 linux下,对一个文件(或者资源)可以进行操作的对象被分为三类: file owner(文件的拥有者),group(组,注意不一定是文件拥有者所在的组), other (其他)而对于每一类别又分别定义了read, write and execute(rwx)权限。即可读权限,可写权限以及执行权限。在这里我们用一个例子来看一下普通权限的作用。
现在假设存在一个文件test.txt,该文件的owner位和group位有rwx权限,而other位无任何权限。现在有一个用户lishyang想对其拥有可读权限,那么我们可以怎么做呢?(假设用户lishuyang不是该文件的owner,也不属与该文件的所属组admin),我觉得可行的方法有三种:

  • 将test.txt文件的other位权限设置为r_x,那么可以满足我们的需求

    chmod  o+rx  test.txt
  • 将用户lishuyang添加至文件的所有组admin,然后可以使用group的权限达到目的
    groupmems -g admin -a lishuyang
  • 通过suid权限使用户lishuyang暂时拥有fileowner权限,以达到目的
    chmod u+s test.txt

    通过上面的用法来看,设置普通权限就必须使得一个普通用户与文件的所属人,所属组建立联系。


ACL权限用途及优势

我们还以上述的test.txt文件举例,当我们按照上述的方式给用户lishuyang设置权限后,我们的确完成了要求,可是这中间却存在几个问题:

  1. 当我们通过放开other位权限来赋予lishuyang权限的同时,其它不属于test.txt所属组,不是test.txt所属人的用户也同样可以通过other位来访问文件,这样文件便共享了出来,显然是不可以的。
  2. 当我们把lishuyang添加至admin组内时,虽然避免了上一个问题,但是lishuyang却拥有了存在于admin内的其他文件的权限,lishuyang的权限得到了放大,同样是不可取的。
  3. 设定suid权限是一个解决方案,但当文件数量很多,我们需要对每个文件都临时获取权限时,这个方法也会显得不灵活了。
    那么我们该如何既能避免上面这些问题,还能满足我们的需求呢?
    这个时候就需要acl权限出马了。什么是ACL权限呢? 其实很简单,同样是为了满足需求给用户设置权限,普通权限的设置需要联系上文件的owner和group,但是acl权限的设置不需要关注用户和文件的关系,也就是说,ACL权限可以给特定的用户,特定的组设置权限,不受文件所属人和所属组的影响。现在我们给test.txt设置acl权限


这个时候lishuyang就只获得了对文件test.txt的rx权限,成功避免了以上的问题。同样的我们还可以对test.txt给一个无关组设置权限,假设一个组为test组,则:

ACL权限用途详解:

  1. 开启acl的方式 (因为centos6之前的版本,操作系统安装时所创建的文件系统默认未开启acl,而操作安装之后使用mkfs格式化的文件系统默认未开启acl,需要手工开启,方法如下:

    tune2fs -o acl  /dev/sda5
    mount -o acl  /dev/sda5  /app
  2. 设置ACL
    给指定用户设置acl权限
    setfacl  -m  u:user:rwx  filename

    给指定的组设置权限

    setfacl -m g:group:rwx filename 

    (注:避免使用系统组;避免使某个用户的多个组都设置不同的acl权限)
    3.设置默认权限
    设置默认权限,是针对目录而言的,当我们给目录设置了默认权限之后,那么目录中的文件以及未来所要创建的文件的权限都已经被设置了acl权限,默认即继承。
    给指定目录设置默认用户权限和组权限

    setfacl -Rm u:user:rwx testdir/
    setfacl -Rm g:group:rwx testdir/

    4.查看文件的acl权限

    getfacl  tesdir/

    5.删除acl权限
    逐一删除acl权限

    setfacl -x  u:user testdir/
    setfacl -x  g:group testdir/ 

    删除默认权限

    setfacl  -k  testdir/

    删除所有权限,清空acl结构

    setfacl  -b testdir/

权限的阀值

权限的阀值,就是权限的上限,我们将其称做mask值
当mask值为rwx时,文件的任何权限的上限都是rwx,而当我们的mask值有范围时,那么就算我们的权限超过mask的值,那么我们只能拥有mask范围内的权限。比如:

上图为例,当我们的权限超过mask值时,其右侧出现#effective:,这表示虽然权限超出,但是其有效权限只有mask所包含的权限。
mask值的设置

setfacl -m m:mask: filedir/

设置的mask值不难发现,其实是放在了group位上,所以在设置mask值时,同样可以通过修改group位的权限达到修改mask值的目的

chmod g=rwx testdir/

acl扩展属性 打包工具不支持存储
以备份文件为例,当我们不小心毁坏或删除掉含有acl权限的文件,然后通过备份文件恢复原文件时,我们将不会得到文件的acl权限,这个时候需要我们手动恢复acl权限,模拟过程如下:

  1. 备份带有acl权限的文件至tar

    getfacl * >/root/acl.bak

    2.利用tar备份文件

    tar cvf file.out

    3.模拟文件损坏

    rm  -rf  *

    4.恢复文件

    tar  xvf file.out

    5.恢复acl

    setfacl --restore /root/acl.bak


权限对于linux整体的学习是一个基础而又不可或缺的内容,不仅仅是acl权限,rwx,suid,sgid,sticky都是我们需要掌握的内容。

原文地址:http://blog.51cto.com/13866567/2149645

时间: 2024-10-19 16:34:24

ACL权限用途及其优势的相关文章

acl权限列表

1.什么是权限列表 对与文件的权限进行附加补充说名的一个权限设定方式 2.如何去查看权限列表 ls -l file -rw-r--r--. 1 root root 0 Nov  7 09:14 file | 如果此位为".",代表这位上没有权限列表 如果此位为"+",代表权限权限列表存在 3.如何查看权限列表 ls -l file -rw-rw-r--<<+>> 1 root root 0 Nov  7 09:14 file getfacl

Linux中权限管理之ACL权限

1.简介: a.作用: 是为了防止权限不够用的情况,一般的权限有所有者.所属组.其他人这三种,当这三种满足不了我们的需求的时候就可以使用ACL权限 b.故事背景: 一个老师,给一个班的学员上课,他在linux的根目录下面建立了一个文件夹,只允许本班级的学员对该目录进行读写执行操作,其他人都不行,这时该目录的权限一般是770(一般我们设置权限都是所有者的权限大于所属组的权限,所属组的权限大于其他人的权限,依次往下),此时有个同学想试听我们的课程,他们只有读和执行的权限,没有写的权限,那么此时该怎么

递归acl权限和默认acl权限

递归acl权限,是指父目录在设定acl权限时,所有子文件和子目录也会拥有相同的acl权限.(主要针对目录下已有的文件) 1 [[email protected] vampire]$ ll 2 total 0 3 -rw-rw-r-- 1 vampire vampire 0 May 18 22:11 anothertest.file 4 -rw-rw-r-- 1 vampire vampire 0 May 18 22:11 test.file 可以看到当前vampire目录下的两个文件都没有acl

Linux ACL权限规划:getfacl,setfacl使用

转载  来源:Linux社区  作者:guodong810 ACL的使用 ACL即Access Control List 主要的目的是提供传统的owner,group,others的read,write,execute权限之外的具体权限设置,ACL可以针对单一用户.单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助.如,某一个文件,不让单一的某个用户访问. ACL使用两个命令来对其进行控制    getfacl:取得某个文件/目录的ACL设置项目    setfacl

权限管理ACL权限

简介 文件的权限一般主要针对三种用户类型:所有者.用户组.其他人:如果有一个用户,我们希望他对文件的权限不在上述三种用户权限之内,我们需要怎么做呢?再新添一个用户组,并将该用户组设为文件的用户组?不可以,一个文件只能有一个用户组,如果指定了新的用户组,之前的用户组将作废.ACL命令就是为了解决三种基本用户类型不满足要求时的问题 查看分区的ACL权限是否开启 ACL权限需要文件所在的分区的支持:首先查看一下系统有哪些分区,使用df -h命令 根分区的文件系统是/dev/sda5,查看该分区是否开启

五大权限:UGO权限、SetUID SetGID Sticky、ACL权限、chattr(文件系统级别的权限)、SELINUX

五大权限:UGO权限.SetUID SetGID Sticky.ACL权限.chattr(文件系统级别的权限).SELINUX ======================文件属性以及ugo权限================================== ls -l 列出文件的属性 linux文件的类型包括以下六种: -  普通文件 d 目录文件 l  链接文件 b block类型的设备文件  块设备文件 c 字符型的设备文件 s socket文件 网络类型的文件 p 管道类型的文件 u

ACL权限的学习

ACL ACL:访问控制列表,其主要作用是将一些"用户"加到表中,并对这些用户的行为进行控制. 案例: 有个文件夹project是root用户创建,并且关于这个文件夹有以下权限 drwxrwx--- ,现在又来了一个新用户叫John,root用户只想让John对这个文件夹有可读可执行权限,但是又不想更改该文件原来的权限.这时候linux提供的用户权限管理机制就不够用了,需要ACL来对用户进行管理,通过ACL我们可以忽略目录/文件的原始权限,而是直接给某个用户分配对某个目录/文件的权限.

ACL权限设置

有时候一个文件的拥有者,所属组,其他人三种角色对文件的权限并不能完全满足.适合某一个用户所需要对文件的操作权限,这时就需要对特殊的用户单独设置权限,下面举例说明查看home目录中vampire目录的访问权限 1 [[email protected] home]# getfacl vampire 2 # file: vampire 3 # owner: vampire 4 # group: vampire 5 user::rwx 6 group::--- 7 other::--- 可以看到只有用户

Linux中ACL权限管理

用户的特殊权限 我们在之前的课程中已经讲过了基本权限.所谓的基本权限指得是,用户对文件拥有所有者所属组和其他人每个身份都有三个权限分别是读.写.执行,今天我们将介绍特殊权限ACL权限. 所谓了ACL权限指的针对一个目录或文件指定一个用户,为这个用户分配指定的权限. 这个ACL权限一般用在需要指定的用户拥有一定的权限的时候才会使用,就相当于windows的文件夹或文件的权限一样的,需要哪个用户有哪些权限就分配就可以了. 举一个例子 图1 上图为一个班级的共享目录,老师属于这个目录的所属主,拥有rw