红联Linux门户
Linux帮助

关于setfacl与getfacl

发布时间:2008-11-14 21:15:44来源:红联作者:snowflytosky
关于setfacl和getfacl,我想,对linux操作系统有一定初步知识的都应该有所耳闻.尤其是那些对权限有了解的老手们,对这两个命令更应该是了然于胸.
本人不材,对linux权限的学习并不是那么纯熟,本着学习请教的想法,与大家分享下我在学习过程中的一点心得,算是给那些没有接触权限的新手们一个大概的轮廓,也算是在大侠面前班门弄斧一回.
其实关于权限的知识实在是多如牛毛,与其有关的命令也是数不胜数.所以要想在有限的篇幅里面面俱到,恐怕不是那么容易做到的.所以今天我只会谈及到两个比较常用的命令:setfacl,getfacl.
看到这个命令的第一反应就应该知道,这是一对对应的命令.而且都有acl.所以,首先,我就得就acl做点解释:
acl 全称 Access Control Lists 翻译成中文叫"访问控制列表",传统的 Linux 文件系统的权限控制是通过 user、group、other 与 r(读)、w(写)、x(执行) 的不同组合来实现的。随着应用的发展,这些权限组合已不能适应现时复杂的文件系统权限控制要求。 例如,目录 /data 的权限为:drwxr-x---,所有者与所属组均为 root,在不改变所有者的前提下,要求用户 tom 对该目录有完全访问权限 (rwx).考虑以下2种办法 (这里假设 tom 不属于 root group)
(1) 给 /data 的 other 类别增加 rwx permission,这样由于 tom 会被归为 other 类别,那么他也将拥有 rwx 权限。
(2) 将 tom 加入到 root group,为 root group 分配 rwx 权限,那么他也将拥有 rwx 权限。
以上 2 种方法其实都不合适,所以传统的权限管理设置起来就力不从心了。
为了解决这些问题,Linux 开发出了一套新的文件系统权限管理方法,叫文件访问控制列表 (Access Control Lists, ACL)。简单地来说,ACL 就是可以设置特定用户或者用户组对于一个文件的操作权限。
ACL 有两种,一种是存取 ACL (access ACLs),针对文件和目录设置访问控制列表。一种是默认 ACL (default ACLs),只能针对目录设置。如果目录中的文件没有设置 ACL,它就会使用该目录的默认 ACL.
首先我来讲一下getfacl ( 显示文件或目录的 ACL)
在我的电脑里首先有一个用户叫NEU.我们学校的简称.同时还有一个用户,software,我的专业名称.
[attach]10414[/attach]
我以neu用户进行操作,在其目录下建立一个文件fileofneu.
[attach]10415[/attach]
可以看到它的初始权限为-rw-rw-r--然后我把这个文件权限进行下修改.使用的命令为chmod,修改后的文件权限为-rw-rw----现在这个文件的权限就不允许其它用户访问了.
[attach]10416[/attach]
然后切换到sofeware用户,来证实这个文件的不可访问性.
[attach]10417[/attach]
下面我们就通过getfacl命令来查看.这时候得进入neu用户下操作了.其命令格式很简单:getfacl fileofneu
[attach]10418[/attach]
权限一目了然.不多介绍了,下面就要用Setfacl来进行修改了.使其在对于其它用户的权限里,只对software用户只读只写.
setfacl -m u:softeware:rw- fileofneu
然后用getfacl命令来进行查看.我们就可以看到多了一行user:software:rw- 这说明其对用户software开放了读写的权限.
为了证实其可用性,再切换到software用户下访问这个文件,发现与前面不同的是,这回可以读写了.
今天就讲这一个吧,讲多了,大家也记不住.
对了,刚才我进行了一下这个操作,发现进不去,原来是我没有给software用户授与访问/home/neu这个目录的进入的权力,所以,我们还得应用setfacl命令来使得software用户拥有进入这个目录的权力.其操作与上面基本一致.请大家做下吧,如果做不出的话,请留言.我会接下来再开小灶.
文章评论

共有 2 条评论

  1. zc17027 于 2008-11-14 22:14:02发表:

    学习了.

  2. cnbtoo 于 2008-11-14 21:48:34发表:

    受益了