标签:Linux之路
文件的属性在文件权限中,一共有十字符,第一个字符为文件的类型。接下来的字符分为三组,分别是文件所有者、所属组、其他人。
每一组分别由rwx 三个参数组合。其中,r代表可读(read)、w代表可写(write)、x代表可执行(execute)
这三个权限的位置不会改变,如果没有权限,就会出现减号-而已
> 所属组:是多个用户的集合**
对于二进制文件来说,r和w没有任何意义,但x是非常危险的
对于普通文件来说:文件对应的是文件的内容。
r只能读取文件内容。也能复制文件的内容,复制到的目标目录必须有wx的权限。
w:能编辑文件内容。删文件,移动、改名、新建文件是由它所在的目录决定的。是由目录的wx权限来决定的(因为目录存的是文件的列表结构和inode号)
x:是对文件的执行。x对文件来说是非常危险的,特别是对于可执行程序的文件,对文本文件毫无意义。
对目录来说:对应的是文件名的列表
r:能读取目录内的文件列表,但无法读取文件属性。
w:可以mv,cp,rm,mkdir,touch与该目录下的文件名异动有关,前提要有x权限。
x:能否进入该目录成为工作目录,cd
有w无x:是无法删除、移动、改文件X:只给目录x权限,不给文件x权限,如果文件本身有x权限 ,那同样会给。
获取权限的顺序:先看你是不是所有者,再看你是不是所属组,最后看你是不是其他人。如果是其中的一类人,那后面的不会去看。
对普通用户来说,没有权限是不能访问资源的
读写权限对root用户不受限制。但x权限受控制。
需要注意的是:对root用户来说,如果自己没有x权限。只要权限后面的几类人带有x权限,root就能执行。而普通用户不行
修改文件的属主:chown
chown [OPTION]... [OWNER][:[GROUP]] FILE...
用法:
OWNER
OWNER:GROUP
命令中的冒号可用.替换
-R: 递归
修改文件的属组:chgrp
chgrp [OPTION]... --reference=RFILE FILE...
-R 递归
普通用户是可能修改自己的改自己的改组的,前提是自己必须在这个组里。
上面所提的权限在Linux通用的传统系统EXT系列和Centos 7上的xfs文件系统才支持,权限的支不支持不是Linux说了算,而是由文件系统说了算。
>root用户的默认umask 为022
>普通用户的默认umask为002
umask 可以拿掉一些权限,因此,适当的定义 umask 有助于系统的安全, 因为他可以用来建立默认的目录或文件的权限。
对目录来说:
default=777-umask
对文件来说:
default =666-umask 再观察结果。
如是有基数们,基数加1。是偶数数不变
SUID, SGID, Sticky
三种常用权限:r, w, x user, group, other
前提:进程有属主和属组;文件有属主和属组
(1) 任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限
(2) 启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组
(3) 进程访问文件时的权限,取决于进程的发起者
(a) 进程的发起者,同文件的属主:则应用文件属主权限
(b) 进程的发起者,属于文件属组;则应用文件属组权限
(c) 应用文件“其它”权限
设置ACL权限:setfacl
查看ACL权限:getfacl
语法:setfacl [-bkRd] [-m|-x acl 参数] 目标文件名
选项与参数:
-m:设置后续的acl权限,不可与-x一起使用
-M:用文件批量设置acl权限
-x: 删除后续的acl权限,不可与-m一起使用
-X:用文件批量删除acl权限
-b:删除所有的acl权限
-k:删除默认的acl权限
-R:递归设置acl权限
ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
ACL生效顺序:所有者,自定义用户,自定义组,其他人
mask
--set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以
示例:
setfacl --set u::rw,u:wang:rw,g::r,o::- file1
getfacl file1 | setfacl --set-file=- file2 复制file1的acl权限给file2
备份和恢复ACL
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R --set-file=acl.txt /tmp/dir1
setfacl --restore acl.txt
getfacl -R /tmp/dir1
标签:Linux之路
原文地址:http://blog.51cto.com/12646134/2103728