1.What is FACL?
FACL,文件系统访问控制列表,即Filesystem Access Control List。根据以前对LINUX权限模型的了解,大概如下:
假设有这么一个场景:
用户TOM创建的文件file,希望用户LUCY可以访问和编辑。 |
分析:
第一,可否TOM用户临时改变file的owner为LUCY,这样就可以达到目的。 显然,这并不可行。因为普通用户根本就没有chown的权限。 第二,可否设置LUCY在file的属组并属组权限有rw或者file的other权限有rw。 可实现,但是有明显的缺点。组里面的用户可不仅仅有LUCY这一个用户。我们需要实现的是细粒度的访问控制。 第三,可否利用suid特殊权限来实现。 的确,只要我们对file设置suid,那么不论是LUCY还是其他用户都可以访问和编辑。那么缺点和上面的也是显而易见的。 |
也就是说,我们希望实现用户和用户之间的资源共享,LINUX提供FACL来帮助我们实现。
2.How to use FACL?
#获取file的访问控制列表 getfacl file #设置 setfacl -m u:USERNAME:permission file setfacl -m g:GROUPNAME:permission file #取消 setfacl -x u:USERNAME file setfacl -x g:GROUPNAME file |
3.Some examples about FACL
[root@localhost backup]# cp /etc/inittab inittab [root@localhost backup]# ls -l total 8 -rw-r--r-- 1 root root 1666 Jun 15 22:28 inittab [tom@localhost backup]$ echo "Hello FACL" >> inittab -bash: inittab: Permission denied [root@localhost backup]# setfacl -m u:tom:rw inittab [root@localhost backup]# getfacl inittab # file: inittab # owner: root # group: root user::rw- user:tom:rw- group::r-- mask::rw- other::r-- [tom@localhost backup]$ echo "Hello FACL" >> inittab [tom@localhost backup]$ tail -2 inittab x:5:respawn:/etc/X11/prefdm -nodaemon Hello FACL |
4.分析与小结
A 注意一旦我们设置了访问权限控制列表,那么: [root@localhost backup]# ls -l inittab -rw-rw-r--+ 1 root root 1677 Jun 15 22:30 inittab 也就是会多了个+,其实FACL就是通过文件的扩展属性来保存权限信息的。 B 复制具有FACL的FILE,会发生什么呢? 【可能会丢失FACL,需要通过一些选项或者命令来避免,以后再说吧~】 C 如果我们对目录设置FACL,那么目录下的文件将会继承FACL。 【实际应用不多,了解即可】 对目录设置FACL,格式如下: setfacl -m d:u:USERNAME:permission file D 用户访问文件图示如下: |
转载于:https://blog.51cto.com/zhangfengzhe/1427116