setfacl和getfacl有何用处

来源:互联网 发布:哪些游戏unity3d 编辑:程序博客网 时间:2024/05/18 17:02

用户权限管理始终是 Unix 系统管理中最重要的环节。大家对 Linux/Unix 的 UGO 权限管理方式一定不陌生,还有最常用的 chmod 命令。为了实现一些比较复杂的权限管理,往往不得不创建很多的组,并加以详细的记录和区分(很多时候就是管理员的噩梦)。可以针对某一个用户对某一文件指定一个权限,恐怕管理员都期待的功能。比如对某一个特定的文件,用户A可以读取,用户B所在的组可以修改,惟独用户B不可以……。于是就有了IEEE POSIX 1003.1e这个ACL的标准。所谓ACL,就是Access Control List,一个文件/目录的访问控制列表,可以针对任意指定的用户/组分配RWX权限。

Linux下一切皆文件,使用ll -ai可以查询文件的详细信息

[shayu@hzclov51 ~]$ ll -ai
total 72
11265 drwx------  4 shayu shayu  4096 Mar  9 18:13 .
 8005 drwxr-xr-x. 4 root  root   4096 Mar  9 17:40 ..
11274 -rw-rw-r--  1 shayu shayu 17225 Mar  9 17:44 1.LOG
11277 -rw-------  1 shayu shayu   303 Mar  9 20:50 .bash_history
11268 -rw-r--r--  1 shayu shayu    18 Jul  9  2013 .bash_logout
11267 -rw-r--r--  1 shayu shayu   176 Jul  9  2013 .bash_profile
11269 -rw-r--r--  1 shayu shayu   124 Jul  9  2013 .bashrc
11270 -rw-r--r--  1 shayu shayu   500 May  7  2013 .emacs
33797 drwxr-xr-x  2 shayu shayu  4096 Jul 14  2010 .gnome2
11271 -rw-r--r--  1 shayu shayu   171 Oct 16  2013 .kshrc
11272 -rw-r--r--  1 shayu shayu   124 Oct 24  2013 .mkshrc
11266 drwxr-xr-x  4 shayu shayu  4096 Mar  7 22:52 .mozilla
11275 -rw-rw-r--  1 shayu shayu     0 Mar  9 17:58 test
11276 -rw-------  1 shayu shayu   627 Mar  9 17:46 .viminfo
11273 -rw-r--r--  1 shayu shayu   658 Aug  6  2013 .zshrc

可以看到每个文件有10列信息展现出来,详细解释如下:

第一列:inode(关于inode可以参考http://www.ruanyifeng.com/blog/2011/12/inode.html这篇文章);
第二列:文件种类和权限(http://blog.csdn.net/sjyu_ustc/article/details/61914536);
第三列: 文件硬链接个数;
第四列: 文件的属主;
第五列:文件所归属的组;
第六列:文件的大小;
第七、八、九列:最后访问或修改时间;
第十列:文件名

先来直观的感受下getfacl都输出什么?

[shayu@hzclov51 ~]$ getfacl 1.LOG
# file: 1.LOG
# owner: shayu
# group: shayu
user::rw-
group::rw-
other::r--

无非是一些文件的权限及属主相关的信息,那他所输出的信息也没有什么特殊的,是否没有必要存在该命令呢?其实不然,事物的存在都有他存在的缘由的。
下面我们看一种场景,当然仍以1.LOG文件为例
该文件具有可读可写(owner)可读可写(group)可执行(other)权限

那么现在系统中存在一用户shayu1,shayu1用户不属于shayu用户组(group),显然针对上述文件而言它属于其他组(other),那么我如何达到shayu1用户对1.LOG文件拥有可读可写权限呢?

方案一:使用chmod命令增加other用户的可写权限,如chmod o+w 1.LOG或者chmod 666 1.LOG。该方法当然可以达到上述目的,但是放大了other用户的权限,比如shayu2(也属于other组)同样也具有了可读可写权限

方案二:就是要讲到的setfacl命令,该命令可以针对某个或某些用户,设置特定的权限,从而不受所属组的影响。

[shayu@hzclov51 ~]$ setfacl -m user:shayu1:rw- 1.LOG 
[shayu@hzclov51 ~]$ getfacl 1.LOG 
# file: 1.LOG
# owner: shayu
# group: shayu
user::rw-
user:shayu1:rw-
group::rw-
mask::rw-
other::r--


此时在使用ll命令,发现多了个+,这表明该文件为acl文件


[shayu@hzclov51 ~]$ ll -ai 1.LOG
11274 -rw-rw-r--+ 1 shayu shayu 17225 Mar  9 17:44 1.LOG


详细的命令介绍可以使用man setfacl或者http://man.linuxde.net/setfacl

0 0
原创粉丝点击