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

相关推荐

  • 马哥教育N22期第五周作业

    1、显示当前系统上root、fedora或user1用户的默认shell; [root@localhost ~]# egrep "^root|fedora|user1" /etc/passwd root:x:0:0:root:/root:/bin/bash fedora:x:1002:1002::/…

    Linux干货 2016-09-15
  • day06(8-3)作业-文件权限

    第一题、三种权限rwx对文件和目录的意义     权限对文件的意义         r(read):可以读取文件的内容,如读取文本文件的内容         w(write):可以编辑、新增或者是修改文件的内容,但不含有删除文件(…

    Linux干货 2016-08-04
  • 第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@unclez ~]# cp -r /etc/skel /home/tuser1 [root@unclez ~]# chmod -R&…

    Linux干货 2016-12-24
  • python基础_1

    变量/常量 常量:一旦赋值,就不能对它从新复制。python不存在常量 字面常量:一个单独出现的量,未赋值给任何变量或者常量 变量:就是一个名字,在固执符号的左边,这个名字可以指复制符号右边的内容。 变量列子: i = 3 print(i)  注:python 是强类型语言,是动态类型语言。(强类型指类型之间不能相互计算/动态类型是指变量是可以赋值…

    Linux干货 2017-10-10
  • ifconfig命令学习

    ifconfig命令 网络配置 ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。 语法 ifconfig(参数) 参数 add<地址>:设置网络设备IPv6的ip地址; del&lt…

    Linux干货 2017-07-02
  • rsync+inotify实现文件同步

    一、前言 什么是rsync,remote synchronize远程同步简写。Linux系统上由rsync这个软件包提供。rsync有几个特点,镜像保存整个文件目录树或文件系统;有较高的数据传输效率;可以借助ssh实现安全数据传输;支持匿名传输等。rsync同步只是针对变化的文件进行传输,意味着其会在源和目标之间比较文件的异同。相对与scp来说,第一次传输两…

    Linux干货 2015-10-31

评论列表(1条)

  • h
    h 2017-09-13 11:14

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