文件和目录为它们的所有者、组群、和所有其他系统用户规定了许可权限。但是,这些权限设置也有其局限性。例如:不同的用户无法被配置使用不同的权限。访问存取控制列表(Access Control Lists,ACL)就由此而生。
    除了在内核中的支持外,你还需要 acl 软件包才能实现 ACL。其中包含用来添加、修改、删除、和检索 ACL 信息的工具。
    cp 和 mv 命令会复制或转移任何与文件和目录相关的 ACL
    在文件或目录中使用 ACL 之前,它们所在的分区必须使用 ACL 支持来挂载。如果它是本地的 ext3 文件系统,它可以使用以下命令来挂载:

   mount -t ext3 -o acl  

   如果分区被列在 /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 设置为给不属于用户组群的用户提供读取和执行权(个体文件的存取 ACL 可以超越这个规则):
    setfacl -m d:o:rx /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
default:user:tfox:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

    对于使用了ACL的文件系统,不能用tar和dump命令来备份ACL,取代的命令是star,使用该工具还需要 star 软件包。
-c  创建一个归档文件。
-n  不抽取文件;和 -x 一起用来显示抽取文件会做些什么。
-r  替换归档中的文件。文件被写入归档文件的结尾处,替换带有同样路径和文件名的文件。
-t  显示归档文件的内容。
-u  更新归档文件。如果文件在归档中不存在,或文件比归档中同名的文件更新,它们就会被写入归档的结尾处。该选项只有在归档是文件的时候或者使用一种特殊磁带时才行得通。
-x  从归档中抽取文件。如果和 -U 一起使用,而且归档中的文件比文件系统上的相应文件要老,该文件就不会被抽取。  
-help 显示最重要的选项。
-xhelp 显示最不重要的选项。
-/  在从归档中抽取文件时不要剥离文件名中的开头斜线。按照默认设置,这些斜线在文件被抽取时被剥离。  
-acl 在创建或抽取时,归档或恢复和文件或目录相关的 ACL。


 


  • 以上内容由 华夏名网 搜集整理,如转载请注明原文出处,并保留这一部分内容。