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简单命令说明(date、clock、echo 、Tab键、screen)

    Linux简单命令说明 1、如何查询命令的帮助文档 外部命令:是系统用应用程序的一部分,在系统启动时不会被加载到内存,而在服务或进程启用时 才执行它。 查看 COMMAND –help man COMMAND 内部命令:是简小的命令,开机就已加载到shell中。 查看 help COMMAND 2、date和clock命令 date #显示当前系统时间 […

    Linux干货 2017-07-12
  • Linux文本处理三剑客之一grep

            终于又到了一周一篇博客的日子 在这学习已经三周了,慢慢养成了写博客的好习惯,也慢慢的懂得了怎么写博客。这周给我印象最深刻的就是正则表达式,原本打算要写前几天所学的内容,但是昨天学到正则表达式让我有点懵,所以我今天会用一天的时间去给大家详细讲解正则表达式,争取让那些和我一样困解的人能够豁然开朗,也正是因为…

    2017-07-29
  • Linux启动流程

    Linux的启动流程有以下部分组成,以下流程以CentOs 6.8为例 1、POST加电自检,检测各项硬件工作是否正常,BIOS选择启动设备。 2、根据设备的前446字节,加载bootloader程序 3、initramfs是1.5阶段,intramfs文件是创建系统时生成的文件。intramfs是一个过渡阶段,initramfs加载系统的一些设备驱动,比如…

    2017-05-15
  • 基于rsync+inotify实现数据实时同步传输

    前言 与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,但随着文件数量的增大和实时同步的要求,rsync已不能满足需求,随之rsync+inotify便应运而生。本文将讲解rsync的基础知识和如何基于rsync+inotify实现数据实时同步传输。 rsync相关介…

    Linux干货 2015-04-27
  • linux用户和用户组

    一、用户和组 1、用户账号类型 在Linux系统中,根据系统管理的需要将用户账号分为不同的类型,其拥有的权限、担任的角色也各不相同。主要包括超级用户、普通用户和程序用户。 【超级用户】:root用户是Linux系统中默认的超级用户账号,对本主机拥有最高的权限,类似于Windows系统中的Administrator用户。只有当进行系统管理、维护任务时,才建议使…

    Linux干货 2017-07-22
  • 【N25第十三周作业】samba配置详解和安装

    samba:   功能:     文件系统共享:类unix系统和windows系统之前文件系统共享     打印机共享;     NetBIOS协议;   服务端程序包:samba  &nb…

    Linux干货 2016-12-18

评论列表(1条)

  • h
    h 2017-09-13 11:14

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