Linux下 FACL详解
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详解的更多相关文章
- Linux 下crontab 详解转
http://yaksayoo.blog.51cto.com/510938/162062 Linux计划任务工具cron用法详解 linux下大名鼎鼎的计划任务工具crontab的使用介绍baidu. ...
- 12 Linux下crontab详解
1. 概述: crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进 ...
- 【转载】Linux下makefile详解--跟我一起写 Makefile
概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makef ...
- Linux下crontab详解
1.crond介绍 crond是Linux下的任务调度命令,让系统定期执行指定程序.crond命令每分钟都会检查是否有要执行的工作,若有要执行的程序便会自动执行. linux下任务调度工作主要分两类: ...
- Linux下lampp详解 (转)
重要文件解释: ProFTPD:一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序,它是在自由软件基金会的版权声明(GPL)下开发.发布的免费软件,可以随意修 ...
- LINUX下 Udev详解
如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略.在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev ...
- Linux下Samba详解及安装配置
1.简介 2.安装配置 3.在windows和linux系统上验证 一.简介 早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据, ...
- Linux下mknod详解
mknod - make block or character special filesmknod [OPTION]... NAME TYPE [MAJOR MINOR] option 有用的就是 ...
- Linux 下DNS详解
配置之前先了解一下bind DNS服务器软件:BIND是一种开源的DNS(Domain Name System)协议的实现,包含对域名的查询和响应所需的所有软件.它是互联网上最广泛使用的一种DNS服务 ...
随机推荐
- Gram-Schmidt向量正交化
正交:向量的内积为0,即相互垂直. 假如存在向量a,b确定一个平面空间,但是a,b向量并不垂直,如下图. 现在要在该平面内找出2个垂直的向量确定该平面: b和e垂直,接下来求解e: 根据向量计算法则: ...
- POJ1422 Air Raid
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8006 Accepted: 4803 Description Consi ...
- 【存储过程】MySQL存储过程/存储过程与自定义函数的区别
---------------------------存储过程-------------------- 语法: 创建存储过程: CREATE [definer = {user|current_user ...
- Linux下汇编语言学习笔记5 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- Linux 攻击防护基础排查
作者:Zzang 来源:cnblogs 原文:https://www.cnblogs.com/Zzang/p/LinuxHack.html 版权声明:本文为博主原创文章,转载请附上博文链接! 基本网络 ...
- Servlet中操作数据库
以下内容引用自http://wiki.jikexueyuan.com/project/servlet/database-access.html: 前提先新建数据库及插入模拟数据: create tab ...
- 得到java异常printStackTrace的详细信息
平时写Java代码时,想看抛出的异常信息,来找出具体的异常点,我们常常会用Exception.toString ()或者 Exception.getMessage()来取得异常信息,再把它print到 ...
- SQLServer2008 快捷键集合
CTRL + SHIFT + B 生成解决方案 CTRL + F7 ...
- myloader恢复mysql数据库演示样例
mydumper是针对mysql数据库备份的一个轻量级第三方的开源工具.备份方式为逻辑备份.它支持多线程.备份速度远高于原生态的mysqldump以及众多优异特性.与其相配套的恢复工具则是mylo ...
- Growth: 一个关于怎样成为优秀Web Developer 的 App
想了想还是决定在今天公布一个预览版.这样才干持续改进.Growth是一个关于怎样成为优秀的Web Developer的APP--结合技能树.成长路线图.进阶书单.Web七日谈以及一些小測验. 它是我对 ...