ACL权限管理练习

ACL简介;
权限管理练习

在学习了用户、组和文件对应的User、Group、Others三类用户以及操作权限Excute、Write和Read后我们知道了在文件或文件夹上我们可以分别对三类用户设置不同的权限。
举个例子:

/home/guanyu目录下的4.txt文件

-rwxrw-r–. 1 guanyu shu 7 Aug 30 10:52 4.txt

User:guanyu拥有rwx权限,
Group:shu组用户拥有rw权限;
Others:其他用户拥有r权限。
如果现在Rockets用户James需要对4.txt取得rw权限,我们会想到以下几种办法:
1. 给文件的other类别增加读和写的权限. 这样由于James会被归为other类别,那么
他也将拥有rw权限。
2. 将James加入到shu group. 那么James会被归为group类别,那么他将拥有读写的权限。
3. 设置suid, 使James能够以guanyu的身份对4.txt进行操作,从而获得rw权限。

第一种做法的问题在于所有用户都将对4.txt拥有读写操作,显然这种做法不可取。
第二种做法的问题在于James被赋予了过多的权限.所有属于shu组的文件,James都可以拥
有其等同的权限了。
第三种做法虽然可以达到只限定James用户一人拥有对4.txt文件的rw权限.但是需要
对sudoers文件进行严格的格式控制. 而且当文件数量和用户很多的时候,这种方法就相当地不灵活了。为了方便让某些其他用户获得权限,我们可以单独设置一种权限管理叫ACL。

一、Access Control List (ACL)接入控制列表简介

简单地来说,ACL就是可以设置特定用户或者用户组对于一个文件/文件夹的操作权限。ACL 是由一系列的Access Entry所组成的,每一条Access Entry定义了特定的类别可以对文件拥有的操作权限。Access Entry有三个组成部分:Entry tag type,qualifier(optional),权限。
在下面的例子中,Entry tag type , qualifier(optional)u:James,权限rw。

[root@h(Brad) guanyu]# setfacl -m u:James:rw 4.txt
[root@h(Brad) guanyu]#getfacl 4.txt
# file: 4.txt
# owner: root
# group: root
user::rwx
user:James:rw-
group::rw-
mask::rw-
other::r--

需要掌握的命令也只有三个: getfacl, setfacl, chacl。

二、安装准备、

1.查看ACL安装情况。使用rpm命令,检查系统已经安装acl。

[root@h(Brad) ~]#rpm -qa acl
acl-2.2.49-7.el6.x86_64

2.使用vim编辑/etc/fstab在 /目录 标签default后面添加acl标签。

[root@h(Brad) ~]#vim /etc/fstab
#
# /etc/fstab
Created by anaconda on Mon Aug 28 17:08:51 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=2f1009b9-8157-4711-b605-f8bec7ae0ed6 / ext4 defaults,acl 1 1
UUID=77d9e29e-26d1-440d-a5ed-aa2929977787 /app ext4 defaults 1 2
UUID=8a3fdf1e-c41c-4fe3-ab8f-4269f1532c93 /boot ext4 defaults 1 2
UUID=fb7024d6-6cbc-4b1f-b543-e1637223a20f swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
"/etc/fstab" 16L, 899C written

3.在启用了acl参数之后重新加载/data分区,出现下面的信息代表分区的acl功能已经正常加载。

[root@h(Brad) ~]#mount -o remount /
[root@h(Brad) ~]#cat /etc/mtab |grep /
/dev/sda5 / ext4 rw,acl 0 0

三、操作

1.操作步骤:
1)查看文件权限状态;
2)用户James对4.txt有rw权限;
3)用户组Rockets对4.txt有r权限;
4)设置mask为x;
5)删除4.txt的acl设定,还原成文件的原来权限。

2.操作:
在这里我们用的的命令有
getfacl:查看文件/目录的ACL设定内容
-c过滤文件ugo权限。
setfacl:设置文件/目录的ACL内容
语法:setfacl [-bkRd] [{-m|-x} acl参数] 文件名
-m :设置后续的acl参数
-x :删除后续的acl参数
-b :删除所有的ACL设定参数
-R :递归设置acl参数
-d :设置预设的acl参数(只对目录有效,在该目录新建的文件也会使用此ACL默认值)
-k :删除预设的ACL参数
1)查看4.txt权限状态。

[root@h(Brad) guanyu]#ll 4.txt
-rwxrw—-. 1 root root 237 Sep 1 07:06 4.txt
[root@h(Brad) guanyu]#getfacl 4.txt
# file: 4.txt
# owner: root
# group: root
user::rwx
group::rw-
other::r–

2)让用户James对4.txt有rw权限

[root@h(Brad) guanyu]#setfacl -m u:James:rw 4.txt
[root@h(Brad) guanyu]#ll 4.txt
-rwxrw—-+ 1 root root 237 Sep 1 07:06 4.txt
[root@h(Brad) guanyu]#getfacl 4.txt
# file: 4.txt
# owner: root
# group: root
user::rwx
user:James:rw-
group::r–
mask::rw-
other::—

这时我们就可以看到James用户在ACL里面已经拥有了对文件的读写权限.在文件权限的最后多了一个+号。当任何一个文件拥有了ACL_USER或者ACL_GROUP的值以后我们就可以称它为ACL文件.这个+号就是用来提示我们的。
特别强调如果文件有ACL_MASK值,那么文件权限标识中第二组rw-代表的就是mask值而不再是group 权限了。
当一个文件拥有了ACL_USER或者ACL_GROUP的值时ACL_MASK同时也会被定义,user和group的acl设置了mask的最大值。

3)用户组Rockets对4.txt有r权限;

[root@h(Brad) guanyu]#setfacl -m g:Rockets:r 4.txt
[root@h(Brad) guanyu]#getfacl -c 4.txt
user::rwx
user:James:rw-
group::rw-
group:Rockets:r–
mask::rw-
other::r–

在设置了ACL之后,再设置mask,acl内容和group权限就会被影响。mask的作用是让用户/组对某个文件只有某些权限。mask只对其他用户和组的权限有影响,而对owner和other的权限是没有任何影响的。在下面的例子中因为设置了mask即acl用户、用户组和acl组权限的上限为–x,所以在他们的权限信息后面多了#effectiv,除了x权限其他都被限制。

4) 设置mask为x;

[root@h(Brad) guanyu]#setfacl -m mask:x 4.txt
[root@h(Brad) guanyu]#ll 4.txt
-rwx–xr–+ 1 root root 237 Sep 1 07:06 4.txt
[root@h(Brad) guanyu]#getfacl 4.txt
# file: 4.txt
# owner: root
# group: root
user::rwx
user:James:rw- #effective:—
group::rw- #effective:—
group:Rockets:r– #effective:—
mask::–x
other::r–

5)删除4.txt的acl设定还原成文件的原来权限。

[root@h(Brad) guanyu]#setfacl -b 4.txt
[root@h(Brad) guanyu]#ll 4.txt
-rwx—r–. 1 root root 237 Sep 1 07:06 4.txt

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/86885

(1)
manbinnmanbinn
上一篇 2017-09-11 08:20
下一篇 2017-09-11 11:18

相关推荐

  • 八.Linux博客-2016年8月8日sed、vim

    格式说明: 操作 概念 命令 说明及举例 八.sed、vim sed 文本编辑工具 行编辑器,每次取出一行在内存里处理,处理完成后屏幕打印。完成后再取出一行放到内存里处理,覆盖原来内存中的行,循环。。 sed -n '3d' f1 把文件f1中的第三行删掉并不在屏幕上显示 sed -n&n…

    Linux干货 2016-08-24
  • Python入门之迭代,列表解析,生成器及文件操作

    迭代器是访问集合元素的一种方式,迭代器包含了__iter__()(返回迭代器对象本身)next()(返回迭代器的下一个元素)迭代器只能往前不会退后 以下类型支持迭代 序列类型:list,str,tuple 非序列类型:dict,file 自定义类 通过内建的函数iter()或对象自带方法__iter__可以获取迭代器对象 l1=range(5) iter1=…

    Linux干货 2015-12-13
  • 马哥教育21期网络班—第11周课程+练习—-成长进行时–不退步–下

    3、描述DNS查询过程以及DNS服务器类别。 DNS查询过程主机—>查找互联网上的主机 www.magedu.com—>联系到自己指向的DNS服务器—>DNS服务器—>找根 .—>根返回给DNS服务器—>DNS找.com—>com返回给DNS—->DNS找ma…

    Linux干货 2016-09-19
  • 命令组合

    1 取出当前已登陆的用户名 2 取出最后登录用户的相关信息 3 取出默认shell最多的的类型   4 转移    [redsun@jiange root]$ sort -t: -k3 -n -r  /etc/passwd | sed -n "1,+3p" | tr 'a-z' …

    Linux干货 2016-11-13
  • MAN手册各章节功能介绍及快捷键键位整理

       初学linux ,请教别人的时候,遇到人不耐烦回答我等菜菜的问题,都会说一句,“自己去man”,“翻过man了吗,再来问吧”,哦,my gd,这个man到底是何方超人啊,其实man就是linux自带的文档,假如你不知道ls这个命令的用法,你可以试着敲入 man  ls  ,然后来看看,会有啥结果。效果不错吧,一般…

    Linux干货 2016-10-18
  • keepalived配置

    前两个配置做完实验没截图,后面的实验有图片。 keepalived的的单独设置 1.确保时间同步 ntpdate 10.1.0.1 2.保证/etc/hosts文件可以解析到 3.本机配置ssh-keygen -t rsa -P ''  ,然后ssh-copy-id -i .ssh/id_rsa.pub root@10.1.44…

    Linux干货 2016-11-11

评论列表(1条)

  • h
    h 2017-09-13 11:14

    内容不错,注意排版,继续加油!