以下任务列表说明列出文件的 ACL、更改 ACL,以及将 ACL 复制到另一个文件的过程。
任务 |
参考 |
---|---|
确定文件是否具有 ACL | |
将 ACL 添加到文件 | |
复制 ACL | |
修改 ACL | |
删除文件的 ACL | |
显示文件的 ACL |
% ls -l filename |
其中,filename 指定文件或目录。
在输出中,模式字段右侧的加号 (+) 表示该文件具有 ACL。
除非已添加了用于扩展 UNIX 文件权限的 ACL 项,否则会将文件视为具有“琐碎” ACL,并且不会显示加号 (+)。
在以下示例中,ch1.sgm 文件具有 ACL。ACL 由模式字段右侧的加号 (+) 表示。
% ls -l ch1.sgm -rwxr-----+ 1 stacey techpubs 167 Nov 11 11:13 ch1.sgm |
% setfacl -s user::perms,group::perms,other:perms,mask:perms,acl-entry-list filename ... |
设置文件的 ACL。如果文件已具有 ACL,则会替换该 ACL。此选项要求至少有 user::、group:: 和 other:: 项。
指定文件属主权限。
指定组属主权限。
为文件属主或组成员之外的用户指定权限。
指定 ACL 掩码的权限。掩码表示允许用户(属主除外)和组拥有的最大权限。
指定文件或目录中要为特定用户和组设置的一个或多个 ACL 项的列表。也可以设置目录的缺省 ACL 项。表 6–7 和表 6–8 显示了有效的 ACL 项。
指定要对其设置 ACL 的一个或多个文件或目录。多个 filename 由空格分隔。
如果该文件已存在 ACL,则 -s 选项将使用新的 ACL 替换整个 ACL。
有关更多信息,请参见 setfacl(1) 手册页。
% getfacl filename |
有关更多信息,请参见如何检查文件是否具有 ACL。
在以下示例中,会在 ch1.sgm 文件中将文件属主权限设置为读写、将文件组权限设置为只读,并将其他用户权限设置为无。此外,还在文件中为用户 anusha 指定读写权限。将 ACL 掩码权限设置为读写,这意味着任何用户或组都没有执行权限。
% setfacl -s user::rw-,group::r--,other:---,mask:rw-,user:anusha:rw- ch1.sgm % ls -l total 124 -rw-r-----+ 1 stacey techpubs 34816 Nov 11 14:16 ch1.sgm -rw-r--r-- 1 stacey techpubs 20167 Nov 11 14:16 ch2.sgm -rw-r--r-- 1 stacey techpubs 8192 Nov 11 14:16 notes % getfacl ch1.sgm # file: ch1.sgm # owner: stacey # group: techpubs user::rw- user:anusha:rw- #effective:rw- group::r-- #effective:r-- mask:rw- other:--- |
在以下示例中,会将文件属主权限设置为读写和执行,将文件组权限设置为只读,并将其他用户权限设置为无。此外,还会在 ch2.sgm 文件中将 ACL 掩码权限设置为读。最后,将为用户 anusha 指定读写权限。但是,由于 ACL 掩码的原因,anusha 的权限为只读。
% setfacl -s u::7,g::4,o:0,m:4,u:anusha:7 ch2.sgm % getfacl ch2.sgm # file: ch2.sgm # owner: stacey # group: techpubs user::rwx user:anusha:rwx #effective:r-- group::r-- #effective:r-- mask:r-- other:--- |
通过重定向 getfacl 输出,将文件的 ACL 复制到另一个文件。
% getfacl filename1 | setfacl -f - filename2 |
指定将从其中复制 ACL 的文件。
指定要对其设置所复制的 ACL 的文件。
在以下示例中,会将 ch2.sgm 中的 ACL 复制到 ch3.sgm。
% getfacl ch2.sgm | setfacl -f - ch3.sgm |
在以下示例中,将用户 anusha 的权限修改为读写。
% setfacl -m user:anusha:6 ch3.sgm % getfacl ch3.sgm # file: ch3.sgm # owner: stacey # group: techpubs user::rw- user::anusha:rw- #effective:r-- group::r- #effective:r-- mask:r-- other:r- |
在以下示例中,将组 staff 的缺省权限修改为对 book 目录的读取权限。此外,还将缺省 ACL 掩码权限修改为读写。
% setfacl -m default:group:staff:4,default:mask:6 book |
删除文件的 ACL 项。
% setfacl -d acl-entry-list filename ... |
删除指定的 ACL 项。
指定文件或目录中要删除的 ACL 项(未指定权限)的列表。只能删除特定用户和组的 ACL 项和缺省 ACL 项。表 6–7 和表 6–8 显示了有效的 ACL 项。
指定一个或多个文件或目录,由空格分隔。
或者,可以使用 setfacl -s 命令删除文件的所有 ACL 项,并使用所指定的新 ACL 项替换它们。
检验是否已删除文件的 ACL 项。
% getfacl filename |
在以下示例中,将从 ch4.sgm 文件中删除用户 anusha。
% setfacl -d user:anusha ch4.sgm |
% getfacl [-a | -d] filename ... |
显示指定文件或目录的文件名、文件属主、文件组和 ACL 项。
显示指定目录的文件名、文件属主、文件组和缺省 ACL 项(如果存在)。
指定一个或多个文件或目录,由空格分隔。
如果在命令行中指定多个文件名,则会在每两个 ACL 项之间显示一个空白行。
在以下示例中,将显示文件 ch1.sgm 的所有 ACL 项。用户和组项旁边的 #effective: 注释表示由 ACL 掩码修改后的权限。
% getfacl ch1.sgm # file: ch1.sgm # owner: stacey # group: techpubs user::rw- user:anusha:r- #effective:r-- group::rw- #effective:rw- mask:rw- other:--- |
% getfacl -d book # file: book # owner: stacey # group: techpubs user::rwx user:anusha:r-x #effective:r-x group::rwx #effective:rwx mask:rwx other:--- default:user::rw- default:user:anusha:r-- default:group::rw- default:mask:rw- default:other:--- |