权限,特殊权限,FACL
用ls -l filename 可以查看文件或者目录的详细信息,具体分析一下
在第一个空格前,有10个字段,第一个“-”表示文件类型,后边“rw-r–r–”表示权限
文件类型 “-” 普通文件
“d” 目录
“b” 块设备文件
“c” 字符设备文件
“l” 字符链接文件(软链接)
“p” 管道文件
“s” 套接字文件
文件(目录)权限 共9位,每3位一组,每一组都有r(读)w(写)x(执行)三个权
限,第一个3位表示属主的权限,第二个3位表示属组的权限,第三
个3位表示other权限
以上图为例,第一个“-”表示是个普通文件,后边3位“rw-”表示属主权限,有读写权限,执行位位“-”说明没有执行权限,“r–”表示属组有只读权限,other和属组一样都是只读文件的权限主要针三类对象进行定义
owner:属主 u
group:属组 g
other 其他 o
all 所有 a 修改所有
文件权限
r:可读,可以使用cat等命令来查看文件内容
w:可写,可以编辑或者删除此文件
x:可执行,可以在命令提示符下当做命令提交给内核执行
目录权限
r:可读,可以对目录执行ls列出内部的所有内容
w:可写,可以在此目录创建或删除文件(需要x权限)
x:可执行,可以用cd命令切换进此目录,也可以使用ls -l查看详细的信息
X:该权限只能对目录使用,给目录下的子目录加x权限,但是如果文件本身有x权限,那么也不会去管,如果文件没有x权限也不会加x
数字法表示权限
读 r=4 写 w=2 执行 x=1
例: rwxrw–w- 用数字法就是,(4+2+1)(4+2+0)(0+2+0)=762
权限管理命令
chown 修改属主
-R:递归 (作用于目录,修改该目录下的所有子目录和文件)
例:chown username:groupname filename(directory) (该命令既可以修改属主也可以修改属组,命令中的:可以用.代替)
chgrp 修改属组
-R:递归 (作用于目录,修改该目录下的所有子目录和文件)
chmod 修改权限(该命令也可以用数字法来设置权限,例:chmod 632 filename)
用法:chmod [OPTION]… OCTAL-MODE FILE…
-R: 递归修改权限
chmod [OPTION]… MODE[,MODE]… FILE… MODE: 修改一类用户的所有权 限: u= g= o= ug= a= u=,g= 修改一类用户某位或某些位权限 u+ u- g+ g- o+ o- a+ a- + –
例:chmod u=rwx,g=r,o= file1 该命令就把文件file1的权限修改为:属主有读写执行权限,属组有只读权限,其他没有权限
chmod [OPTION]… –reference=RFILE FILE…
参考RFILE文件的权限,将FILE的修改为同RFILE
例 : chmod –reference=file1 file2 参照file1的权限的设置file2的权限
umask值:遮罩码
root默认umask值为022
普通用户的umask默认值为002
umask:可以查看用户的umask值
umask #:可以设定为#的umask值
例:umask 145,那么通过umask命令可以看到显示为145,
那么新建文件的权限就为:666-umask 666-145
新建目录的权健就为:777-umask 777-145
如果umask为默认,那么root创建文件或目录的权限就是777或666减去默认值022
其他用户创建的权健就是777或666减去默认值002
有相减的方法来设置目录的权限时,算出来的结果是多少,那么权限就是多少。但是对文件来说,文件默认是么有x权限,如果相减算出来的结果有x权限的话,则将其权限+1
umask -S:用模式法来显示
例: [root@centos7 app]#umask -S
显示结果: u=rwx,g=rx,o=rx
umask -P :输出的结果可以被直接调用
特殊权限:SUID SGID Sticky
SUID: 运行某程序时,相应进程的属主是程序文件自身的属性,而不启动者(只要该程序有SUID权限,那么不管访问该程序的用户是属组还是other,都在访问的时候临时拥有属主的权限,用属主的身份进行访问)
SGID:运行某程序时,相应进程的属组是程序文件自身的属性,而不启动者所属的基本组(只要该程序有SGID权限,那么不管访问该程序的用户是属组还是other,都在访问的时候临时拥有属组的权限,用属组的权限进行访问)
Sticky:创建一个公共目录,在该公共目录下,每个人都可以创建删除自己的文件,但是不能删除别人的文件
SUID()
1、 suid只能作用在二进制程序上,不能作用在script上
2 、执行suid权限的程序时,此用户将继承此程序的所有者权限
SGID
1 、作用在二进制程序上,执行sgid权限的程序时,此用户将继承此程序的所属组权限
2 、作用在目录上:在此目录新的文件的所属组,将自动继承目录的所属组
Sticky:
1 、只能作用在目录
2 、具有sticky权限的目录,普通用户只能自已删除自已的文件,不能删除别人的文件
特殊权限的设置命令
chmod u+s |u-s filename
chmod g+s |g-s filename(directory)
chmod o+t |o-t directory
如果属主,属组和other没有相应的x权限,那么特殊权限设置以后显示为大写(S,S,T)
特殊权限单独用数字法来表示SUID(4)、SGID(2) 、Sticky(1)
例:chmod 4743 | 2654 |1400 filename
chattr +i 不能删除,修改,改名,所有用户都不可以,包括root
+a 只能进行追加内容,不能删除,不能清空
+A 不更新atime
-i 去除i特殊属性,恢复原来的权限
-a
-A
lsattr :i和a、A特殊属性设置成功后,可以用lsattr进行查看
例:[root@centos7 app]#chattr +i file1
[root@centos7 app]#lsattr file1
i属性显示结果 —-i———– file1
a属性显示结果 —–a———- file1
ACL 访问控制列表
(ls -l查看文件目录时,9位权限之后的点变为“+”,表示该文件目录设置了ACL)
ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设 置权限
CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
CentOS6系统安装完成后,新建分区默认不支持ACL
setfacl -m:设置,附加acl权限
格式:setfacl -m u:username:perm filename 例:setfacl -m u:yan:rw file
setfacl -m g:groupname:perm filename 例:setfacl -m g:opts:rwx file
-x:取消acl权限,用法同-m
-k:清空默认的acl权限
-R:递归(对目录下新建文件不生效,如果要对新建文件生效需要加d(d表示默认)(例:d:username:rw))
-b:清空所有的ACL
getfacl:获取(查看)ACL权限
getfacl file1 | setfacl –set-file=- file2 复制file1 的acl权限给file2
ACL生效顺序:所有者,所属组,自定义用户,自定义组,其他人
getfacl 获取ACL时,有一个mask,这个mask的值,就是ACL文件(目录)上的group的权限,并不是传统的组权限。
mask的作用范围是(自定义用户,自定义组,所属组),起到一个限制最大权限的作用。这三类用户的最大权限不能超过mask的权限(mask最大权限需要与用户的权限进行逻辑与运算后才能得到).
用户或组的设置必须存在于mask权限设定范围内才会生效
修改 mask值:
setfacl -m mask::(rwx) filename
备份和恢复ACL
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要 加上-p 参数。但是tar等常见的备份工具是不会保留目录 和文件的ACL信息
例:1、getfacl -R filename > acl.txt
setfacl -R –set-file=acl.txt filename2
2、setfacl –restore acl.txt(该命令要在相对路径下执行)
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88605