Linux权限管理--ACL权限

Linux setfacl 命令帮助:

选项

-b,--remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。
-k,--remove-default:删除缺省的acl规则。如果没有缺省规则,将不提示。 
-n,--no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。 
--mask:重新计算有效权限,即使ACL mask被明确指定。 
-d,--default:设定默认的acl规则。 
--restore=file:从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行。 
--test:测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出。 
-R,--recursive:递归的对所有文件及目录进行操作。 
-L,--logical:跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录。 
-P,--physical:跳过所有符号链接,包括符号链接文件。 
--version:输出setfacl的版本号并退出。 
--help:输出帮助信息。 
--:标识命令行参数结束,其后的所有参数都将被认为是文件名 
-:如果文件名是-,则setfacl将从标准输入读取文件名。 
选项-m和-x后边跟以acl规则。多条acl规则以逗号(,)隔开。
选项-M和-X用来从文件或标准输入读取acl规则。 
选项--set和--set-file用来设置文件或目录的acl规则,先前的设定将被覆盖。 选项-m(--modify)和-M(--modify-file)选项修改文件或目录的acl规则。 
选项-x(--remove)和-X(--remove-file)选项删除acl规则。 
当使用-M,-X选项从文件中读取规则时,setfacl接受getfacl命令输出的格式。

Linux权限管理--ACL权限

ACL权限不是针对某个文件或某个目录的,它是针对分区而言的。

使用df -h 查看系统分区
[linuxidc@linuxidc ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              16G  2.9G  12G  20% /
tmpfs                947M    0  947M  0% /dev/shm
/dev/sda1            291M  35M  242M  13% /boot
/dev/sr0              3.0G  3.0G    0 100% /media/cdrom

可以看到/的分区号是/dev/sda3,查看/dev/sda3是否支持acl权限

使用命令dumpe2fs查看是否支持acl

[root@linuxidc ~]# dumpe2fs -h /dev/sda3
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:  <none>
Last mounted on:          /
Filesystem UUID:          4e32f639-ccc9-4942-ac35-b281fdfbb79e
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:        signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:        clean
Errors behavior:          Continue

可以看到Default mount options项是支持acl的

一般操作系统默认是支持acl权限的.如果不支持可开启分区的alc权限

使用mount命令重新挂载/分区,并支持acl权限

[root@linuxidc ~]# mount -o remount,acl /

使用mount命令重新挂载并支持acl权限只是临时生效,系统重启后失效

[root@linuxidc ~]# vim /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun May  1 09:19:06 2016
#
# 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=4e32f639-ccc9-4942-ac35-b281fdfbb79e /                      ext4    defaults        1 1
UUID=7e2ce555-c044-41f8-9cd5-18c7d5293cf1 /boot                  ext4    defaults        1 2
UUID=fa77a5dd-1f7f-4428-bcc4-79f7742ed320 swap                    swap    defaults        0 0

系统默认是支持acl权限的,如果默认不支持,我们可以在对应的分区后面加上acl选项,如下所示,以/分区为例

9 UUID=4e32f639-ccc9-4942-ac35-b281fdfbb79e /                      ext4    defaults,acl        1 1

有时候一个文件的拥有者,所属组,其他人三种角色对文件的权限并不能完全满足、适合某一个用户所需要对文件的操作权限,这时就需要对特殊的用户单独设置权限,下面举例说明

查看home目录中linuxidc目录的访问权限

[root@linuxidc home]# getfacl linuxidc
# file: linuxidc
# owner: linuxidc
# group: linuxidc
user::rwx
group::---
other::---

可以看到只有用户linuxidc(root除外)才对自己家目录有rwx权限.所属组和其他人没有任何权限.
现在有这样一个用户,只能让他进入linuxidc目录,查看里面有哪些文件和文件内容,但是不能让他创建文件
可以先找一个存在的用户试试,看看能不能对/home/linuxidc目录做任何操作

[linuxidc@linuxidc home]$ tail -3 /etc/passwd
named:x:25:25:Named:/var/named:/sbin/nologin
linuxidc:x:501:501::/home/linuxidc:/bin/bash
iaknehc:x:502:502::/home/iaknehc:/bin/bash

[iaknehc@linuxidc home]$ cd linuxidc
-bash: cd: linuxidc: Permission denied

可以看到当切换到iaknehc时,用户对linuxidc目录没有任何权限,这里只是测试了一下其他人对linuxidc的权限,其实所属组的用户也一样,可以自己试试.所以我们需要一种更灵活的权限设置方法.这就是acl.

[linuxidc@linuxidc home]$ setfacl -m u:iaknehc:rx linuxidc    //将目录linuxidc的rx权限分配给用户iaknehc
[linuxidc@linuxidc home]$ getfacl linuxidc
# file: linuxidc
# owner: linuxidc
# group: linuxidc
user::rwx
user:iaknehc:r-x
group::---
mask::r-x
other::---

下面切换到iaknehc用户试试权限是否生效

[linuxidc@linuxidc home]$ su - iaknehc
Password: 
[iaknehc@linuxidc ~]$ cd ..
[iaknehc@linuxidc home]$ cd linuxidc
[iaknehc@linuxidc linuxidc]$ ll      //iaknehc可以进入linuxidc目录,并浏览目录中的文件
total 4
-rw-rw-r-- 1 linuxidc vampire 12 May 16 23:21 linuxidc
[iaknehc@linuxidc linuxidc]$ cat vampire    //iaknehc可以查看文件类容
just a test
[iaknehc@linuxidc linuxidc]$ touch test    //iaknehc不能在linuxidc目录中创建文件
touch: cannot touch `test': Permission denied

可以看到针对目录linuxidc设置的acl权限已经生效.

先查看目录linuxidc的acl权限

[root@linuxidc home]# getfacl linuxidc
# file: linuxidc/
# owner: linuxidc
# group: linuxidc
user::rwx
user:iaknehc:r-x
group::---
mask::r-x
other::---

mask是用来指定最大有效权限的,如果给用户赋予了ACL权限,是需要和mask的

权限"相与"才能得到用户的真正权限.

将用户iaknehc的权限设置为rwx在查看acl权限

[linuxidc@linuxidc home]$ setfacl -m u:iaknehc:rwx linuxidc
[vampire@linuxidc home]$ getfacl linuxidc
# file: linuxidc
# owner: linuxidc
# group: linuxidc
user::rwx
user:iaknehc:rwx
group::---
mask::rwx
other::---

设置acl最大权限后再查看iaknehc的acl权限

[linuxidc@linuxidc home]$ setfacl -m m:rx linuxidc  //修改最大有效权限,即mask的值
[linuxidc@linuxidc home]$ getfacl linuxidc
# file: linuxidc
# owner: linuxidc
# group: linuxidc
user::rwx
user:iaknehc:rwx        #effective:r-x    //虽然之前设置了rwx权限,但是后来通过mask限制了最大权限,现在用户实际权限为rx
group::---
mask::r-x
other::---

setfacl -m m:rx linuxidc 

通过执行该命令后,文件所属组,其他人和通过acl设置的用户对该文件最大权限只有rx,可以防止
设置权限不能准确把握时,导致设置权限过大,但该命令不影响文件拥有者的权限.

acl相关命令选项

setfacl -m 给用户或组设置acl权限
setfacl -m u:iaknehc:rx linuxidc //给用户iaknehc设置acl权限
setfacl -m g:iaknehc:rx linuxidc //给组iaknehc设置acl权限

修改最大有效权限

setfacl -m m:rx linuxidc //修改文件vampire的最大有效权限为rx,一般只有文件所属者或root才能修改文件最大有效权限

setfacl -x 删除指定用户的acl权限
setfacl -x u:iaknehc linuxidc //删除用户iaknehc对文件linuxidc的acl权限
setfacl -x g:iaknehc linuxidc //删除组iaknehc对文件linuxidc的acl权限

setfacl -b 删除文件所有acl权限
setfacl -b linuxidc //删除文件vampire的所有acl权限,所有用户的acl权限都被删除

setfacl -d 设置文件默认acl权限

setfacl -k 删除默认的acl权限

setfacl -R 递归设置acl权限
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容

  • 简介 ACL权限控制主要目的是提供传统的 owner,group,other 的 read,wirte,execu...
    honehou阅读 1,146评论 0 1
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,150评论 2 34
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,217评论 9 467
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,642评论 18 139
  • 第一节 ACL权限的简介与开启 1.ACL权限简介 解决用户身份不足的情况下,文件对用户的权限无法分配的问题 2....
    littlexjing阅读 446评论 0 1