修改所属人,所属组 文件的 r w x 权限 修改文件的权限chmod umask
文件系统上的特殊权限 设定文件特定属性 ACL
文件权限
1.修改所属人,所属组 chown
(1)change owner 修改文件的所属人
owner.group 或 owner:group 修改文件的所属人和所属组
以上只有root才能修改文件的所有人
(2)chgrp : change group 或 chown :group [ .group] 修改文件的所属组
root和文件的owner可以修改文件的所属组(owner修改所属组时,owner必须属于目标组)
chown -R 递归
chown –reference test.sh(源文件) house(修改的文件)
2.文件的 r w x 权限
(1)文件的权限主要针对三类对象进行定义:
owner: 所属人, u
group: 所属组, g
other: 其他人, o
(2)权限判断的顺序(beta)
先判断是否是文件的所有人,如果是,则执行所属人的权限后结束,如果不是所有人,则判断是否所属组(可以是主组也可以是辅助组),如果是,则执行所属组的权限后结束,如果不是则执行其他人的权限后结束。
所有人->所有组->其他人
(3)普通文件 (三种常用权限)
r: 可以读取文件的内容
例: cat less more nano vim 执行脚本
w: 可以修改文件的内容
例: nano vim > >> tee gedit
x: 可以执行该文件 (单独无作用)
例: 执行脚本
rwx:最大权限 666
(4)目录文件
r: 用户可以列出目录下有哪些文件(不能查看文件的详细信息)
w: 只有w无意义。
x: 用户可以进入该目录(如果知道文件名,且有相对应的文件权限 ,可以执行对应的操作)
rx: 用户可以进入目录,且可以长列出。
rw:等于只有r
wx: 能进入,能创建能删除,不能列出。故用户能否删除文件与文件自身权限无关。
rwx: 最大权限 777
—:null
目录文件只有rx :
目录文件只有wx :
用数字表示权限
— 0 –x 1 -w- 2 -wx 3 r– 4 r-x 5 rw- 6 rwx 7
3.修改文件的权限 chmod
只有所属人和root可以更改文件的权限
(1)字符修改 chmod u=..,g=..,o=… filename
ugo+rwx 或 a=rwx filename 给文件所有权限
a= filename 没有任何权限
u+-…,g=-…,o=-…
chmod -R a+X dir1 递归给目录加x权限;X 当普通文件本身没有x权限时,则跳过,给目录加上所以x权限。一般用于批量修改多个文件、目录的权限时,自动跳过没有执行权限的文件。
(2)数字修改 chmod n filename
chmod –reference 源文件 目的文件
4.umask 最大权限-umask=默认权限(创建文件touch,创建目录mkdir时)
最大权限 777(目录文件) 666(普通文件)
umask 022(root默认) 022 (root下) (普通用户 002 002)
默认权限 755 644
当umask中全部是偶数时,可以直接减,当umask中包含奇数时,对于目录直接减,对于文件,在奇数所在的位减完后加一。
umask 231 设置umsk为231
例 777 rwxrwxrwx(目录文件) 666 rw-rw-rw-(普通文件)
231 -w–wx–x 021 -w–wx–x
546 r-xr–rw- 446 r–r–rw-
umask –S 字符模式方式显示默认权限
umask –p 输出可被调用
全局设置: /etc/bashrc 用户设置:~/.bashrc(永久生效)
cp时 当目标文件不存在时(相当于touch了一个新文件) 目标文件的权限=源文件-umask
当目标文件存在时,被覆盖, 目标文件还是目标文件的权限 (目录也一样)
5.文件系统上的特殊权限
SUID, SGID, Sticky
(1)suid 当对一个可执行的二进制文件作用了SUID权限之后,任何拥有执行该文件权限的人,在执行的过程时都临时拥有该文件所属人的权限。 例:passwd -rwsr-xr-x
权限设定:chmod u+s FILE 或 chmod 4… file
SUID: 占据所属人的执行权限位x
s: 所属人拥有x 权限 S :所属人没有x
(2)sgid 当对一个可执行的二进制文件作用了SGID权限之后,任何拥有执行该文件权限的人,在执行的过程时都临时拥有该文件所属组的权限。
当对一个目录作用了SGID权限之后,任何对该目录有wx权限的用户在该目录下创建的文件及目录的所有属均为该目录的所有组。
权限设定:chmod g+s file 或 chmod 2… file
SGID: 占据属组的执行权限位
s: group 拥有x 权限 S :group 没有x
(3)sticky 当对一个目录作用了sticky之后(只限制组用户w权限,目录的owner不受影响),该目录下的文件仅其所属人,目录所属人(有wx权限),root才能删除。
权限设定:chmod o+t 目录 或 chmod 1… 目录
Sticky: 占据other 的执行权限位,但和其他人无关
t: other 拥有x 权限 T :other 没有x
chmod 6… file 即有suig也有sgid
3… file 即有sgid也有sticky
5… file 即有suid也有sticky
7… file all
5.设定文件特定属性
lsattr 显示特定属性
chattr +i 不能删除,改名,更改 -i解除
chattr +a 只能追加内容,不能删除,改名,更改 -i解除
6. ACL
(1) CentOS7当中,无论是操作系统安装时还是之后手工创建的文件系统(xfs、ext4)均会开启ACL功能。
CentOS6及之前的版本,仅操作系统安装时创建的文件系统才会默认开启ACL,手工创建的文件系统,需要手工开启ACL功能。
mount -o acl /dev/sda7 开启ACL,重新挂载时不指定即可
tune2fs -o acl /dev/sda7 开启ACL 取消的方式 tune2fs -o ^acl /dev/sda7
(2) 有ACL时权限判断的顺序
先判断是否是文件的OWNER,如果是,则执行OWNER的权限后结束,如果不是OWNER,则判断是否是ACL的USER,如果是则执行USER权限后结束,如果不是ACL的USER, 则判断是否属于GROUP或ACL GROUP,如果是,则取最大权限。如果不属于任何GROUP,则执行OTHER。
owner > ACL的USER > 文件所属组+ACL的group+所属组属于的组(weiguo)相加的最大权限 > other
(3) 用法:
①setfacl -m u:liubei:— f1 设置ACL USER
setfacl -m g:shuguo:rwx f1 设置ACL GROUP
setfacl -m u::rw,u::rw,g::r,o:: f1 设置多个
②setfacl -M test.sh f1 重新给f1加上原来的ACL
test.sh 内容来自getfacl f1 > test.sh,如下
# file: f1
# owner: root
# group: root
user::rw-
user:caopi:rwx
group::r–
mask::rwx
other::r–
③setfacl -x u:liubei f1 单独去除一条ACL权限
setfacl -X aclrm.txt f1[ f2 f3 *] 可以批量删除ACL的用户和组
先编辑aclrm.txt 内容如下
u:liubei
g:shuguo
④setfacl -m mask:r f1 或 chmod g=r f1 一旦设置了ACL权限后,原有的文件GROUP不可再更改,使用chmod即修改ACL MASK
ACL MASK随着新的ACL设置会被重置,重置的标准是让该文件上的所有ACL及文件原GROUP上的权限都有效。
setfacl -Rm u:zhangfei:rwx acltest/ 递归设置
⑤备份和恢复ACL
主要的文件操作命令cp和mv 都支持ACL,cp 命令需要加上-p复制权限。但是tar等常见的备份工具是不会保留目录和文件的ACL信息
getfacl -R /tmp/dir1 > acl.txt 将目录下的所有文件的ACL属性备份到文件
setfacl -R -b /tmp/dir1 清除目录下所有文件的ACL属性
setfacl -R –set-file=acl.txt /tmp/dir1 通过文件还原ACL属性的方法1
setfacl –restore acl.txt 通过文件还原ACL属性的方法2
⑥setfacl -m d:u:caocao:rwx d1 设置ACL默认权限,仅影响新创建的文件及目录,不影响当前。
setfacl -m g:caopi:rwx d1
setfacl -x d:caocao d11 删除一条默认权限
setfacl -k d1 删除全部默认权限
setfacl -b f1 去除该文件上ACL属性。
有 什 么 错 误 请 大 家 指 教!
原创文章,作者:along,如若转载,请注明出处:http://www.178linux.com/82761