传统的 权限设置只有user,group,other三种,并没有办法针对某一个用户或者某一个组来设定权限。ACL就是用于这个目的的

那 ACL 主要可以针对哪些方面来控制权限呢?他主要可以针对几个项目:

  • 使用者 (user):可以针对使用者来配置权限;

  • 群组 (group):针对群组为对象来配置其权限;

  • 默认属性 (mask):还可以针对在该目录下在创建新文件/目录时,规范新数据的默认权限;

查看系统是否安装了ACL可以通过如下的方法查看。如果没有安装或者版本比较老的话会安装或者更新。

root@zhf-linux:/home/zhf#
apt-get install acl

Reading
package lists... Done

Building
dependency tree

Reading
state information... Done

acl
is already the newest version (2.2.52-3).

acl
set to manually installed.

0
upgraded, 0 newly installed, 0 to remove and 103 not upgraded.

启动ACL有2个方法:

1
mount-o remount acl /

2
vim /etc/fstab

LABEL=/1
/ ext3 default,acl 1 1

下面开始来使用ACL。主要是2个命令:setfacl,
getfacl

setfacl:

-m:
设置后续的acl参数给文件使用,不可与-x合用

-x:删除后续的acl参数,不可与-m合用

-b:删除所有的ACL设置参数

-k:删除默认的ACL参数

-R:递归设置ACL

-d:设置默认的ACL参数,只对目录有效

我们来实际测试一下,首先用touch
acl_test1新建一个文件:这个时候文件的权限对于root用户来说三rw,对于root组内其他用户是r,
对于其他用户是r

root@zhf-linux:/home/zhf/zhf#
ls -al

total
277796

drwxrwxr-x
10 zhf zhf 4096 Sep 18 21:43 .

drwxr-xr-x
31 zhf zhf 4096 Sep 18 21:35 ..

-rw-r--r--
1 root root 0 Sep 18 21:43 acl_test1

执行设置acl的命令,单独给zhf_test用户增加rw的权限

root@zhf-linux:/home/zhf/zhf#
setfacl -m u:zhf_test:rw acl_test1

再继续查看acl_test1文件的权限,发现后面多了一个+号。表示权限和之前的不一样了

root@zhf-linux:/home/zhf/zhf#
ls -al

total
277796

drwxrwxr-x
10 zhf zhf 4096 Sep 18 21:43 .

drwxr-xr-x
31 zhf zhf 4096 Sep 18 21:35 ..

-rw-r-xr--+
1 root root 0 Sep 18 21:43 acl_test1

我们可以通过getfacl来查看:可以比较直观的看到用户zhf_test
增加了r-x权限。#后面接的是文件的默认权限。

root@zhf-linux:/home/zhf/zhf#
getfacl acl_test1

#
file: acl_test1

#
owner: root

#
group: root

user::rw-

user:zhf_test:r-w

group::r--

mask::r-x

other::r--

这个时候如果我们用zhf_test去改写acl_test1文件是可以成功的,因为有了读写权限,但是其他除root用户之外的都不能去写。只能读。同样的可以用setfacl
-m g:组名:rw
acl_test1来设置某个组的权限

如何删除设定的ACL权限呢。用-x参数,删除指定用户的权限

root@zhf-linux:/home/zhf/zhf#
setfacl -x u:zhf_test acl_test1

root@zhf-linux:/home/zhf/zhf#
getfacl acl_test1

#
file: acl_test1

#
owner: root

#
group: root

user::rw-

group::r--

mask::r--

other::r--


getfacl的时候会看到一个mask值,这个是干什么用的呢。这个mask的意思是用户或组所设置的权限必须要存在与mask的权限设置范围内才会生效。也就是有效权限。举个例子来看:

root@zhf-linux:/home/zhf/zhf#
setfacl -m m:r acl_test1

root@zhf-linux:/home/zhf/zhf#
getfacl acl_test1

#
file: acl_test1

#
owner: root

#
group: root

user::rw-

user:zhf_test:rw- #effective:r--

group::r--

mask::r--

other::r--

setfacl
-m m:r
acl_test1设置acl_test1的有效权限为r,此时通过getfacl可以看到mask的值为r。而且zhf_test后面多了一个注释
#effective:r--。报名实际有效权限为r。

一起来学linux:ACL的更多相关文章

  1. 跟着鸟哥学Linux系列笔记3-第11章BASH学习

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 跟着鸟哥学Linux系列笔记2-第10章VIM学习 认识与学习bash 1. ...

  2. 跟着鸟哥学Linux系列笔记2-第10章VIM学习

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 常用的文本编辑器:Emacs, pico, nano, joe, vim VI ...

  3. 跟着鸟哥学Linux系列笔记0-如何解决问题

    跟着鸟哥学Linux系列笔记0-扫盲之概念 在发生问题怎么处理: 1.  在自己的主机.网络数据库上查询How-To或FAQ -Linux 自身的文件数据: /usr/share/doc -CLDP中 ...

  4. 跟着鸟哥学Linux系列笔记1

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 装完linux之后,接下来一步就是进行相关命令的学习了 第五章:首次登录与在线求助man page 1. X ...

  5. 为学Linux,我看了这些书

    为学Linux,我看了这些书   去年开始,抱着学习的态度开始了我的Linux学习,到现在,差不多一年了,收获很多,不敢说精通Linux,但是,还是对得起"略懂"这两个字的.这一年 ...

  6. 十天学Linux内核之第十天---总结篇(kconfig和Makefile & 讲不出再见)

    原文:十天学Linux内核之第十天---总结篇(kconfig和Makefile & 讲不出再见) 非常开心能够和大家一起分享这些,让我受益匪浅,感激之情也溢于言表,,code monkey的 ...

  7. 十天学Linux内核之第九天---向内核添加代码

    原文:十天学Linux内核之第九天---向内核添加代码 睡了个好觉,很晚才起,好久没有这么舒服过了,今天的任务不重,所以压力不大,呵呵,现在的天气真的好冷,不过实验室有空调,我还是喜欢待在这里,有一种 ...

  8. 十天学Linux内核之第八天---构建Linux内核

    原文:十天学Linux内核之第八天---构建Linux内核 今天是腊八节,说好的女票要给我做的腊八粥就这样泡汤了,好伤心,好心酸呀,看来代码写久了真的是惹人烦滴,所以告诫各位技术男敲醒警钟,不要想我看 ...

  9. 十天学Linux内核之第七天---电源开和关时都发生了什么

    原文:十天学Linux内核之第七天---电源开和关时都发生了什么 说实话感觉自己快写不下去了,其一是有些勉强跟不上来,其二是感觉自己越写越差,刚开始可能是新鲜感以及很多读者的鼓励,现在就是想快点完成自 ...

  10. 十天学Linux内核之第六天---调度和内核同步

    原文:十天学Linux内核之第六天---调度和内核同步 心情大好,昨晚我们实验室老大和我们聊了好久,作为已经在实验室待了快两年的大三工科男来说,老师让我们不要成为那种技术狗,代码工,说多了都是泪啊,, ...

随机推荐

  1. Android蓝牙开发教程(三)——蓝牙设备相互通讯

    在上一篇中已经介绍如何连接我们搜索到的蓝牙设备,如果你还没阅读过,建议先看看上一篇文章Android蓝牙开发教程(二)——连接蓝牙设备 在上一篇文章中,无论是自动连接还是被动连接,连接成功后,都是将获 ...

  2. Linux学习之十三-vi和vim编辑器及其快捷键

    vi和vim编辑器及其快捷键 1.vi与vim区别 它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方 ...

  3. C# Graphics

    Graphics.FillPie 方法 填充由一对坐标.一个宽度.一个高度以及两条射线指定的椭圆所定义的扇形区的内部. Graphics.FillPie (Brush, Int32, Int32, I ...

  4. Android中的Telephony学习笔记(2)

    上一篇文章中学习了android.provider中Telephony类. 这一篇文章学习android.telephony包中的类,这些类是android提供给上层调用的API. 为监測基本电话信息 ...

  5. google PLDA + 实现原理及源代码分析

    LDA背景 LDA(隐含狄利克雷分布)是一个主题聚类模型,是当前主题聚类领域最火.最有力的模型之中的一个,它能通过多轮迭代把特征向量集合按主题分类. 眼下,广泛运用在文本主题聚类中. LDA的开源实现 ...

  6. (转)微信小程序开发项目——笑话大全

    此项目是学习完微信小程序后实现的一个demo,采用聚合数据的免费api获取最新的文本笑话和趣图(图片和gif图)   项目地址:https://github.com/zhijieeeeee/wecha ...

  7. npm run watch-poll 监控css、js 文件更新

    后台执行npm run watch-poll 你可以在执行命令的后面接一个&命令就会在后台运行了.完整命令:npm run watch-poll & 就是任务号 文章来源:刘俊涛的博客 ...

  8. 【Excle数据透视】如何用含有单元格的数据来创建数据透视

    取消合并单元格,填充相同内容项,然后创建数据透视表. 如下图:需要使用数据创建数据透视表 步骤一 开始→格式刷,然后对单元格区域G2:G15使用格式刷功能,保留合并单元格格式 步骤二 选中A2:A18 ...

  9. 【Python】向函数传递任意数量的实参

    传递任意数量的实参 有时候,你预先不知道函数需要接受多少个实参,好在Python允许函数从调用语句中收集任意数量的实参 def get_letter(*letters): for i in lette ...

  10. iOS 依据文本内容为TextView动态定义高度

    解决方式: 1.定义一个textview,在storyboard中设定该textview的constraints. 2.将高度的constraint定义到头文件里:(直接拖拽) @property ( ...