1. 什么是ACL

ACL即Access Control List 主要的目的是提供传统的owner,group,others的read,write,execute权限之外的具体权限设置

ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。

如,某一个文件,不让单一的某个用户访问。或者只让某个用户访问

2. ACL的使用

ACL使用两个命令来对其进行操作
    getfacl:查看某个文件/目录的ACL设置
    setfacl:设置某个文件/目录的ACL设置

2.1  getfacl的使用

getfacl:查看某个文件/目录的ACL设置

getfacl + 文件或目录的路径

2.2 setfacl的使用

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

-m:设置后续acl参数 (设定额外的ACL)
  -x:删除后续acl参数  (删除额外的ACL)
  -b:删除全部的acl参数
  -k:删除默认的acl参数
  -R:递归设置acl,包括子目录
  -d:设置默认acl

3. 为文件配置ACL

问题:

oldboy.txt 文件 希望oldboy用户对这个文件有读写权限

www用户只能进行读取   其他用户没有权限

oldboy.txt

3.1 创建环境

首先创建三个测试用户
[root@oldboyedu-50 oldboy]# useradd oldboy
[root@oldboyedu-50 oldboy]# useradd www
[root@oldboyedu-50 oldboy]# useradd LH
[root@oldboyedu-50 oldboy]# touch oldboy.txt 创建测试文件
[root@oldboyedu-50 oldboy]# ll oldboy.txt         查看默认权限
-rw-r--r-- 1 root root 0 Aug  8 19:42 oldboy.txt
[root@oldboyedu-50 oldboy]# getfacl oldboy.txt    查看acl权限
# file: oldboy.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

3.2 配置 其他用户没有权限

chmod 640 oldboy.txt 达成其他用户没有权限 LH此处代表的是其他用户  所以用LH用户测试
[root@oldboyedu-50 oldboy]# chmod 640 oldboy.txt   先将权限改为 其他用户都没有权限
[root@oldboyedu-50 oldboy]# ll oldboy.txt          检查  已修改
-rw-r----- 1 root root 0 Aug  8 19:42 oldboy.txt
登录LH用户测试
[LH@oldboyedu-50 ~]$ ll /oldboy/                  LH用户看不到oldboy.txt这个文件
total 20
-rw-r--r--  1 root   root     66 Aug  8 17:09 ett.txt
-rw-r-----. 1 root   root    292 Aug  6 13:51 id.txt
-rw-r--r--  1 root   root     27 Aug  6 13:37 info.txt
-rw-r--r--  1 root   root     24 Aug  6 12:51 nginx.log
-rw-r-----  1 root   root      0 Aug  8 19:42 oldboy.txt
d-wxr-xr-x  2 oldboy oldboy 4096 Aug  7 13:01 test

3.3 配置oldboy用户

setfacl -m u:oldboy:rw oldboy.txt
-m 表示 配置额外的ACL  u:oldboy 表示为oldboy用户配置 :rw  表示配置rw(读写权限)  
-m u:oldboy:rw  所以连起来 此处表示 额外为oldboy用户赋予rw权限  配置完后可以getfacl查看
退出到root用户 修改oldboy的权限
[root@oldboyedu-50 oldboy]# setfacl -m u:oldboy:rw oldboy.txt
[root@oldboyedu-50 oldboy]# getfacl oldboy.txt
# file: oldboy.txt
# owner: root
# group: root
user::rw-
user:oldboy:rw-
group::r--
mask::rw-
other::---
进入到oldboy用户测试
[oldboy@oldboyedu-50 oldboy]$ vim oldboy.txt   可以读取 可以修改

3.4 配置www用户

继续 退出到root用户 修改www的权限
[root@oldboyedu-50 oldboy]# setfacl -m u:www:r oldboy.txt  修改www用户的权限 使其可读
[root@oldboyedu-50 oldboy]# getfacl oldboy.txt
# file: oldboy.txt
# owner: root
# group: root
user::rw-
user:oldboy:rw-
user:www:r--
group::r--
mask::rw-
other::---
进入到www权限
[www@oldboyedu-50 ~]$ vim /oldboy/oldboy.txt 使用vim
进入编辑模式 底部会显示红字Warning: Changing a readonly file    (要修改一个只读文件)
到此处全部完成

4. ACL常见问题

4.1 MASK值的问题

如果getfacl查看文件有MASK值 那么ls查看位于用户组的权限代表的就是mask值 而不再是group用户组了

我们举个例子

新建一个文件 linux.txt  查看下权限  新文件默认权限为644

[root@oldboyedu-50 oldboy]# touch linux.txt
[root@oldboyedu-50 oldboy]# echo "123" >> linux.txt
[root@oldboyedu-50 oldboy]# cat linux.txt
123
[root@oldboyedu-50 oldboy]# ll linux.txt             ll查看文件属性信息
-rw-r--r-- 1 root root 0 Aug  8 21:49 linux.txt
[root@oldboyedu-50 oldboy]# getfacl linux.txt        getfacl查看下linux,txt的默认权限
# file: linux.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

模拟一下环境

我们把linux,txt所属的用户组换成LH  (LH的用户组包含用户LH)

方便等下测试

[root@oldboyedu-50 oldboy]# chown .LH linux.txt
[root@oldboyedu-50 oldboy]# ll linux.txt
-rw-r--r-- 1 root LH 0 Aug  8 21:49 linux.txt
[root@oldboyedu-50 oldboy]# getfacl linux.txt
# file: linux.txt
# owner: root
# group: LH
user::rw-
group::r--
other::r--

修改下权限  给oldboy用户加上一个单独的rwx权限

[root@oldboyedu-50 oldboy]# setfacl -m u:oldboy:rwx linux.txt   增加额外的权限
[root@oldboyedu-50 oldboy]# getfacl linux.txt                   查看权限
# file: linux.txt
# owner: root
# group: LH
user::rw-
user:oldboy:rwx
group::r--
mask::rwx                       多出了一个MASK
other::r--

[root@oldboyedu-50 oldboy]# ll linux.txt
-rw-rwxr--+ 1 root LH 0 Aug  8 21:49 linux.txt     ll查看文件属性  用户组所属位置的权限也变成了rwx

我们测试一下现在用户组的权限到底是一开始的r  还是现在的rwx

用LH用户测试 现在用户组是LH的

[LH@oldboyedu-50 oldboy]$ ll linux.txt           先查看下权限
-rw-rwx---+ 1 root LH 4 Aug  9 08:33 linux.txt
[LH@oldboyedu-50 oldboy]$ cat linux.txt          可以读取  因为用户组默认有r权限
123
[LH@oldboyedu-50 oldboy]$ /oldboy/linux.txt      无法执行
-bash: /oldboy/linux.txt: Permission denied
[LH@oldboyedu-50 oldboy]$ echo " >> linux.txt   无法修改
-bash: linux.txt: Permission denied

所以测试可以发现 虽然用户组位置权限变成了rwx但是用户组实际的权限并没有变 还是原来的r

所以getfacl查看文件有MASK值 那么ls查看位于用户组的权限代表的就是mask值 而不再是group用户组了

也可以理解为修改了ACL后  ls查看的文件权限就不是全部显示的了

更改了ACL  权限应该以getfacl查看的为准。

Linux下 FACL详解的更多相关文章

  1. Linux 下crontab 详解转

    http://yaksayoo.blog.51cto.com/510938/162062 Linux计划任务工具cron用法详解 linux下大名鼎鼎的计划任务工具crontab的使用介绍baidu. ...

  2. 12 Linux下crontab详解

    1. 概述: crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进 ...

  3. 【转载】Linux下makefile详解--跟我一起写 Makefile

    概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makef ...

  4. Linux下crontab详解

    1.crond介绍 crond是Linux下的任务调度命令,让系统定期执行指定程序.crond命令每分钟都会检查是否有要执行的工作,若有要执行的程序便会自动执行. linux下任务调度工作主要分两类: ...

  5. Linux下lampp详解 (转)

    重要文件解释: ProFTPD:一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序,它是在自由软件基金会的版权声明(GPL)下开发.发布的免费软件,可以随意修 ...

  6. LINUX下 Udev详解

    如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略.在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev ...

  7. Linux下Samba详解及安装配置

    1.简介 2.安装配置 3.在windows和linux系统上验证 一.简介 早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据, ...

  8. Linux下mknod详解

    mknod - make block or character special filesmknod [OPTION]... NAME TYPE [MAJOR MINOR] option 有用的就是 ...

  9. Linux 下DNS详解

    配置之前先了解一下bind DNS服务器软件:BIND是一种开源的DNS(Domain Name System)协议的实现,包含对域名的查询和响应所需的所有软件.它是互联网上最广泛使用的一种DNS服务 ...

随机推荐

  1. 基于html实现一个todolist待办事项

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  2. Rim 边缘光

    边缘光:计算眼睛和模型顶点法线的点积,结果作为强度,和材质输出:顶点和法线平行时,强度最大,垂直时,强度最小.因此将他取反,即同一方向时,强度最小,垂直时,强度最大. -dot(normalize(v ...

  3. 3D标签云

    一.圆的坐标表达式 for(var i = 0;i < len;i++){ degree = (2*(k+1)-1)/len - 1;a = Math.acos(degree);//这样取得弧度 ...

  4. Linux读取网卡流量脚本

    #!/bin/bash #eval `date "+day=%d; month=%m; year=%Y; hour=%H; minute=%M second=%S"` #INSTF ...

  5. 【状压+状态转移】A Famous Airport Managere

    https://www.bnuoj.com/v3/problem_show.php?pid=25653 [题意] 给定一个3*3的九宫格,模拟一个停机坪.第一个格子一定是'*',代表take off ...

  6. requests模块发送POST请求

    在HTTP协议中,post提交的数据必须放在消息主体中,但是协议中并没有规定必须使用什么编码方式,从而导致了 提交方式 的不同.服务端根据请求头中的 Content-Type 字段来获知请求中的消息主 ...

  7. [bzoj4698][Sdoi2008]Sandy的卡片_后缀数组_二分/单调队列_双指针

    Sandy的卡片 bzoj-4698 Sdoi-2008 题目大意:题目链接. 注释:略. 想法: 这个题跟一个Usaco的题特别像.我们把这些串差分 现在我们要求的就是公共子串且出现次数不少于$k$ ...

  8. 文件I/O和标准I/O

    转载:https://blog.csdn.net/kyang_823/article/details/79496561 一.文件I/O和标准I/O文件I/O:文件I/O也称为不带缓冲的I/O(unbu ...

  9. CentOS 6.9正式版下载

      2017-04-07 ,CentOS 6.9正式发布,带来了诸多改进,具体如下. CentOS 6.9重大改进: — 不再有LiveCD,用户可将LiveDVD复制到USB key,在需要时使用: ...

  10. react 项目实战(二)创建 用户添加 页面 及 fetch请求 json-server db.json -w -p 8000

    1.安装 路由 npm install -S react-router@3.x 2.新增页面 我们现在的应用只有一个Hello React的页面,现在需要添加一个用于添加用户的页面. 首先在/src目 ...