天天看点

setfaclsetfacl

configuring access control lists(ACLs)

基本内容:

描述ACLs

在命令行下使用ACLs

在图像界面下使用ACLs

创建默认的ACLs

当为一个文件或目录的ACL被创建了之后,他就提供了更广泛的针对文件或目录的访问许可.这些许可是在基于UNIX许可情况下的一种延伸.标准的UNIX文件对于文件所有者,文件组,其他组具有读写执行三种权限.

ACLs提供了针对每个文件或每个目录的更广泛的访问控制.

ACL的语法格式是:

entry-type:[UID OR GID]:perm.其中perm代表一些执行权限如读,写,执行,或由0-7的数字来代表

ACL entry type有下面几种:

1,u[ser]::perm

2,g[roup]::perm

3,o[ther]::perm

4,u[ser]::UID:perm or u[ser]:username:perm

5,g[roup]:GID:perm or g[roup]:groupname:perm

6,m[ask]::perm

介绍和ACL相关的一些命令:

getfacl filename(s):展示文件上的ACL

setfacl -m acl_entries filename:在文件上创建或更改ACL

setfacl -s acl_entries filename:用新的ACL代替旧的ACL

setfacl -d acl_entries filename:删除文件上一个或多个ACL

setfacl -f acl_file filename

setfacl -r filename:重新计算ACL mask.

能通过两种方式即命令行下或图像界面(使用命令/usr/dt/bin/dtfile启动图像界面),来做下面一些事情:

判断文件是否有一个ACL,列出、更改、删除、替换一个ACL,重新计算ACL的mask,从一个文件拷贝一个ACL链接

1,判断文件是否有一个ACL,常用的方法是进入到相应的目录,用ls -l命令展开,如果在权限后带一个加号,说明有ACL.不过用ls命令得不到实际的ACL,推荐用getfacl命令.

2,列出一个ACL,常用的命令格式是:getfacl [-a | -d] filename1 [filename2...]

-a列出了文件名,文件所有者,文件所属组,ACL条目

-d列出了文件名,文件所有者,文件所属组,及默认的ACL条目

要注意一点这里的ACL mask跟umask不相同,umask值是默认的文件或目录拥有的权限.而ACL mask对每个文件或目录能不相同.

3,更改一个ACL,这也是常用的方法.常用的格式是:setfacl -m acl_entry,filename

比如:# setfacl -m u:userb:7 file2

4,删除一个ACL,常用的命令格式是:setfacl -d acl_entry filename

比如:# setfacl -d u:usera file2

5,替换一个ACL,常用的命令格式是:setfacl -s u::perm,g::perm,o:perm,m:perm,[u:UID:perm],[g:GID:perm] filename

比如:# setfacl -s u::rwx,g::rw-,o:r--,m;rw-,u:usera:rwx file1

6,更改ACL mask.

常用的命令格式是:setfacl -r -m acl_entry filename.其中-r选项是指接受最大的effictive值.-m是更改当前的ACL

比如:# setfacl -r -m u:usera:7 file1

7,复制一个文件的ACL到另一个文件.常用的命令格式是:getfacl filename1 |setfacl -f - filename2

8,创建默认的ACL.要注意的是设置默认的ACL只针对目录操作,而且在为一个新增的用户或组之前必须设置默认的user,group,other,ACL mask值.

比如:#setfacl -m d:u::rwx,d:g::r-x,d:o:r-x,d:m:r-x dir1,其中d代表default.

设置了这个之后,才能够添加新的用户,比如:# setfacl -m default:user:usera:rwx dir1

继续阅读