Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101936999
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: 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  

规则()必须使用以下格式指定。同一条命令中可以指定多项规则,只要它们是用逗号分开即可。

  • u::

为用户设置存取ACL。用户名或UID必须被指定。用户可以是系统上的任何合法用户。

  • g::

为组群设置存取ACL。组群名称或GID必须被指定。组群可以是系统上的任何合法组群。

  • m:

设置有效权限屏蔽。该屏蔽是组群所有者和所有用户和组群项目的权限的合集。

  • o:

为文件的组群用户之外的用户设置存取ACL。 空格被忽略。权限()必须是代表读、写和执行的字符(r、w、x)的组合。 如果某文件或目录已经有了一个ACL,而setfacl命令仍被使用了,额外的规则就会被添加到已存在的ACL中,或用来修改已存在的规则。 例如,要给用户tfox以读写权限:

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属性的文件系统。较老的版本则拒绝检查它。

阅读(279) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~