Linux文件系统访问控制列表详解
我们系统中的某用户在系统中所创建的文件的属主和属组分别是该用户的属主和基本组。
普通用户无法更改文件的属主和属组,因为普通用户没有相应的权限,无法执行chown命令。
当我们以某个用户的身份去登录我们的系统的时候,系统会给该用户返回一个shell进程,当该用户在访问某个文件的时候,一定是以该进程去访问文件的,这个进程的属主就是该用户,这个进程的属组就是该用户的基本组,该进程在访问文件的时候是以该用户的身份去访问的。
·文件系统访问控制列表
FACL->Filesystem Acess Control List
利用文件的扩展属性保存额外的访问控制权限
用法格式:
->设定facl:利用-m选项
1, 设定用户的额外访问控制权限:setfacl -m u:username:perm filename
一个由root创建的文件,它的属主属组都是root,并且其他用户没有写权限
用户linux对该文件没有写权限
此时我们我们给linux用户设定了访问控制列表
此时才可以对该文件拥有读写权限
但是此访问控制列表只针对linux用户,其他用户依然没有读写权限
,2,设定组的额外访问控制权限:setfacl -m g:groupname:perm filename
给该文件设定只属于linux组的额外访问控制列表,由上可知只有属于linux组的用户才对该文件有读写权限,不属于linux组的用户则没有读写权限
->查看facl:
使用getfacl命令
格式:getfacl FILENAME...
->取消设定facl:利用-x选项
取消用户的额外访问控制权限:setfacl -x u:username
取消组的额外访问控制权限:setfacl -x g:groupname
facl中:
->user后面没有跟用户名表示的是文件属主的权限
->group后面没有跟组名表示的是文件属主的权限
->mask表示的是额外访问控制权限的最大权限,maks可自定义,自定义之后,额外访问控制权限的最大权限不得超过mask的权限,否则超出的权限会被裁掉。
·文件权限的应用次序:
当一个进程将要访问一个文件的时候(没有facl的情况下):
1,首先应用Owner权限,当要访问的文件的属主和该进程的属主一致的情况下,就以该属主的权限去执行文件
2,其次应用Group的权限,当要访问的文件的属组和该进程的属组一致的情况下,就以该属组的权限去执行文件
3,最后应用Other的权限,如果Other有相应的权限的话,就以Other的权限去执行文件。
当一个进程将要访问一个文件的时候(有facl的情况下):
1,如果该进程的属主和要访问文件的属主不一致的话,那么就看要访问文件的facl的Owner是否和该进程的属主一致,一致的话就以facl的Owner的权限去执行文件。
2,如果该进程的属组和要访问文件的属组不一致的话,那么就要看要访问文件的facl的Group是否和该进程的属组一致,一致的话就以facl的Group的权限去执行文件。
3,否则应用Other的权限。
一个有扩展属性的文件,权限位的最后一位有一个+号,这表示该文件有文件访问控制列表,文件访问控制列表里用的是文件的扩展属性,且此种文件在进行复制或归档的时候,文件的额外访问控制权限可能无法复制或归档,除非使用特殊的选项或命令。
我们还可以在目录上设定额外的访问控制权限,设定之后,在该目录中所创建的文件自动继承某些用户或某些组的额外访问控制权限