facl
2016-09-03 21:39
99 查看
在linux系统中,由于权限的问题,在权限不匹配的情况下,是不能操作(这里所说的操作包括读、写、删除)其他用户的文件的。
在用户以及用户的属组 与 文件的属主、属组不匹配的情况下,用户只能以‘其他用户’的身份访问该文件,而文件的创建者为了安全在创建此文件时并不想让‘其他用户’操作此文件,但是又想让某一个用户(该用户属于‘其他用户’)访问。
在这种情况下,如果有root的话,可以把两个用户放到同一个用户组中。但是在没有root的情况下,该如何解决?这时就可让文件的创建者修改文件的访问控制列表acl。把‘其他用户’添加到此文件的属主并赋予权限、或添加到属组并赋予权限。这样添加的这个‘其他用户’就可操作此文件了。
查看文件acl的命令:
getfacl file1 file2.....
查看的结果格式类似如下:
setfacl -m user:UserName:Perms file1 ...
setfacl -m group:GroupName:Perms file1 ...
添加acl权限后,在使用ll命令查看文件时,在权限位上会出现一个 + 号,则证明此文件有acl权限。下面添加一个其他用户具有读写权限。
此次试验中没有把test文件的‘其他用户’权限位上的读权限去掉,这个再次做试验时可以把这个权限去掉,这样可以更好的说明在‘其他用户’没有任何权限的情况下,acl所起的作用。
取消acl权限的命令:
setfacl -x user:UserName: file1 ...
setfacl -x group:GroupName: file1 ...
在取消的命令中UserName后面不加冒号(:)也可以,并且后面不用跟权限,如果跟权限会报错
若是文件原来属组的权限为rw-,在设置user或group的acl权限为rwx的情况下,这时属组的权限就会显示为rwx,实际文件的属组用户并没有执行权限(x),所以在碰到权限中带有 + 号的文件,查看文件属组权限时要使用getfacl file命令查看。
参考http://man.linuxde.net/setfacl
在用户以及用户的属组 与 文件的属主、属组不匹配的情况下,用户只能以‘其他用户’的身份访问该文件,而文件的创建者为了安全在创建此文件时并不想让‘其他用户’操作此文件,但是又想让某一个用户(该用户属于‘其他用户’)访问。
在这种情况下,如果有root的话,可以把两个用户放到同一个用户组中。但是在没有root的情况下,该如何解决?这时就可让文件的创建者修改文件的访问控制列表acl。把‘其他用户’添加到此文件的属主并赋予权限、或添加到属组并赋予权限。这样添加的这个‘其他用户’就可操作此文件了。
查看文件acl的命令:
getfacl file1 file2.....
查看的结果格式类似如下:
[john@localhost test]$ getfacl test # file: test # owner: john # group: john user::rw- group::rw- other::r--添加acl的命令格式:
setfacl -m user:UserName:Perms file1 ...
setfacl -m group:GroupName:Perms file1 ...
添加acl权限后,在使用ll命令查看文件时,在权限位上会出现一个 + 号,则证明此文件有acl权限。下面添加一个其他用户具有读写权限。
[john@localhost test]$ id uid=501(john) gid=501(john) groups=501(john) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [john@localhost test]$ ll total 0 -rw-rw-r--. 1 john john 0 Sep 1 20:35 test [john@localhost test]$ setfacl -m user:bob:rw- test [john@localhost test]$ ll total 4 -rw-rw-r--+ 1 john john 0 Sep 1 20:35 test先使用id命令可看到当前用户是john,接下来用ll命令查看当前目录下的文件,然后给当前目录下的test文件添加一个acl让bob用户对此文件具有rw(读写)权限,再用ll命令可看到test文件的权限位上已经多出一个 + 号。
[bob@localhost test]$ id uid=502(bob) gid=502(bob) groups=502(bob) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [bob@localhost test]$ ll total 8 -rw-rw-r--+ 1 john john 10 Sep 1 20:59 test [bob@localhost test]$ cat test hello bob [bob@localhost test]$ echo "hello john" >> test [bob@localhost test]$ cat test hello bob hello john [bob@localhost test]$切换到bob用户,使用cat命令读取test文件内容,可看到能正常读取出来;再使用echo命令向test文件中写入数据,写入后再cat一下可看到刚才已经写入的内容。
此次试验中没有把test文件的‘其他用户’权限位上的读权限去掉,这个再次做试验时可以把这个权限去掉,这样可以更好的说明在‘其他用户’没有任何权限的情况下,acl所起的作用。
取消acl权限的命令:
setfacl -x user:UserName: file1 ...
setfacl -x group:GroupName: file1 ...
在取消的命令中UserName后面不加冒号(:)也可以,并且后面不用跟权限,如果跟权限会报错
[john@localhost test]$ id uid=501(john) gid=501(john) groups=501(john) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [john@localhost test]$ ll total 8 -rw-rw----+ 1 john john 21 Sep 1 20:59 test [john@localhost test]$ setfacl -x user:bob: test [john@localhost test]$ cat test hello bob hello john [john@localhost test]$在上述命令中john用户把test的acl权限取消。然后在下面的命令中用bob用户对其进行读操作,可见bob已经不能进行读取test文件中的内容。
[bob@localhost test]$ id uid=502(bob) gid=502(bob) groups=502(bob) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [bob@localhost test]$ ll total 8 -rw-rw----+ 1 john john 21 Sep 1 20:59 test [bob@localhost test]$ cat test cat: test: Permission denied [bob@localhost test]$在上面命令中可能你会发现,在john用户已经把acl取消掉,并且bob用户确实对test文件没有操作权限了,test的权限位上仍存在 + 号,可使用getfacl test查看一下。
[bob@localhost test]$ getfacl test # file: test # owner: john # group: john user::rw- group::rw- mask::rw- other::---可看到多了个mask::rw-权限,把此权限取消后 + 号就会消失,这个权限是添加acl权限自动添加上去的。
[john@localhost test]$ setfacl -x mask:: test [john@localhost test]$ ll total 4 -rw-rw----. 1 john john 21 Sep 1 20:59 test至于mask是什么权限,这里简单说下,mask会伴随着添加了user或group的acl权限而产生,通常会和添加的user或group的acl权限位保持一致,比如添加user的acl权限为rw,随之出现的mask的权限也为rw。
若是文件原来属组的权限为rw-,在设置user或group的acl权限为rwx的情况下,这时属组的权限就会显示为rwx,实际文件的属组用户并没有执行权限(x),所以在碰到权限中带有 + 号的文件,查看文件属组权限时要使用getfacl file命令查看。
[john@localhost test]$ ll total 4 -rw-rw----. 1 john john 21 Sep 1 20:59 test [john@localhost test]$ setfacl -m user:bob:rwx test [john@localhost test]$ ll total 8 -rw-rwx---+ 1 john john 21 Sep 1 20:59 test [john@localhost test]$
参考http://man.linuxde.net/setfacl
相关文章推荐
- 使用 setfacl 和 getfacl in linux
- Linux ACL权限控制:getfacl、setfacl
- 特殊权限及SUID,facl及Linux的终端
- linux ACL权限规划:getfacl,setfacl使用
- Linux学习之二十一(facl及用户及linux终端)
- getfacl命令找不到解决
- FACL
- Linux---facl以及终端
- facl及用户及linux终端
- 05---权限管理和FACL
- 0117磁盘配额,facl,nis
- getfacl,setfacl命令--ACL文件访问控制
- facl以及linux终端
- 高级文件权限管理 facl和超级权限chattr
- 文件访问控制列表facl
- FACL 文件系统的权限设置
- FACL的使用
- 【Linux学习016】facl与Linux终端
- Linux系统上的特殊权限SUID,SGID,STICKY以及额外权限管理工具facl命令
- SUID&SGID&Sticky&setfacl