分类: LINUX
2008-05-04 22:27:18
文件和目录为它们的所有者、组群和所有其他系统用户规定了许可权限。但是,这些权限设置也有其局限性。例如:不同的用户无法被配置使用不同的权限。访问存取控制列表(Access Control Lists,ACL)就由此而生。
GTES11内核为ext3文件系统和NFS导出的文件系统提供ACL支持。ACL在通过Samba存取的ext3文件系统上也被识别。除了在内核中的支持外,你还需要acl软件包才能实现ACL。其中包含用来添加、修改、删除和检索ACL信息的工具。
cp和mv命令会复制或转移任何与文件和目录相关的ACL。
在文件或目录中使用ACL之前,它们所在的分区必须使用ACL支持来挂载。如果它是本地的ext3文件系统,它可以使用以下命令来挂载:
mount -t ext3 -o acl
例如:
mount -t ext3 -o acl /dev/hdb3 /work
如果分区被列在/etc/fstab文件中,该分区的项目就能够包括acl选项,如:
LABEL=/work /work ext3 acl 1 2
如果某个ext3文件系统是通过Samba来存取的,而且其中还启用了ACL,ACL就会被识别,这是因为Samba已经使用–with-acl-support选项被编译了。在存取或挂载Samba共享的时候不需要任何特殊标志。
按照默认设置,如果被NFS服务器导出的文件系统支持ACL,并且NFS客户能够读取ACL,ACL就会被客户系统利用。在配置服务器的时候,若要禁用NFS共享上的ACL,则在/etc/exports文件中包括no_acl选项。要在客户上挂载NFS共享的时候禁用其中的ACL,通过命令行或/etc/fstab文件使用no_acl选项来挂载它。
ACL有两种:存取ACL(access ACLs)和默认ACL(default ACLs)。存取ACL是对指定文件或目录的存取控制列表。默认ACL只能和目录相关。如果目录中的文件没有存取ACL,它就会使用该目录的默认ACL。默认ACL是可选的。 ACL可以按以下条件配置:
setfacl工具为文件和目录设置ACL。使用-m来添加或修改文件或目录的ACL:
setfacl -m
规则(
为用户设置存取ACL。用户名或UID必须被指定。用户可以是系统上的任何合法用户。
为组群设置存取ACL。组群名称或GID必须被指定。组群可以是系统上的任何合法组群。
设置有效权限屏蔽。该屏蔽是组群所有者和所有用户和组群项目的权限的合集。
为文件的组群用户之外的用户设置存取ACL。 空格被忽略。权限(
setfacl -m u:tfox:rw /project/somefile
要删除用户、组群或其它人的所有权限,使用-x选项,并且不指定任何权限:
setfacl -x
例如,删除UID为500的用户的所有权限:
setfacl -x u:500 /project/somefile
要设置默认的 ACL,在规则前面添加 d:,并且指定一个目录而不是文件名。 例如:要把 /share/ 目录的默认
要判定某个文件或目录的现存ACL,使用getfacl命令:
getfacl
它返回的输出和以下相仿:
# file: file # owner: tfox # group: tfox user::rw- user:smoore:r-- group::r-- mask::r-- other::r--
如果指定的是目录,并且它有一个默认的ACL,默认的ACL也会被显示,如:
# file: file # owner: tfox # group: tfox user::rw- user:smoore:r-- group::r-- mask::r-- other::r-- default:user::rwx
4.2.5 给带有ACL的文件系统归档 star工具和tar工具相仿。它们都能够被用来生成文件归档。不过,它们的选项有所不同。请参考表3-1来获得比较常用的选项列表。要获得所有可用的选项,请参考star的说明书页。使用该工具还需要 star 软件包。
选项 | 描述 |
-c | 创建一个归档文件。 |
-n | 不抽取文件;和-x一起用来显示抽取文件会做些什么。 |
-r | 替换归档中的文件。文件被写入归档文件的结尾处,替换带有同样路径和文件名的文件。 |
-t | 显示归档文件的内容。 |
-u | 更新归档文件。如果文件在归档中不存在,或文件比归档中同名的文件更新,它们就会被写入归档的结尾处。该选项只有在归档是文件的时候或者使用一种特殊磁带时才行得通。 |
-x | 从归档中抽取文件。如果和-U一起使用,而且归档中的文件比文件系统上的相应文件要老,该文件就不会被抽取。 |
-help | 显示最重要的选项。 |
-xhelp | 显示最不重要的选项。 |
-/ | 在从归档中抽取文件时不要剥离文件名中的开头斜线。按照默认设置,这些斜线在文件被抽取时被剥离。 |
-acl | 在创建或抽取时,归档或恢复和文件或目录相关的ACL。 |
表 3-1 star的命令行选项
如果ACL已经在某个给定文件系统上的某个文件上设置了,该文件系统就会有一个ext_attr属性。这个属性可以使用以下命令来查看:
tune2fs -l
得到了ext_attr属性的文件系统可以使用较老的内核来挂载,但是那些内核并不强制推行任何被设置了的ACL。 被包括在版本为1.22或更高的e2fsprogs软件包中的e2fsck工具的几个版本,都能够检查带有ext_attr属性的文件系统。较老的版本则拒绝检查它。