一.文件所有者和属组属性操作
1.设置文件所有者chown
chown命令可以修改文件的属主,也可以修改文件属组
格式: chown [option]...[owner][:[group]] file
chown [option]... --reference=rfile file
说明:
owner #只修改所有者
owner:group #同时修改所有者和属组
:group #只修改属组,冒号也可用 . 替换
--reference=RFILE #参考指定的属性来修改
-R #递归,危险选项,慎用
2.设置文件属组信息chgrp
chgrp命令可以只修改文件的属组
格式: chgrp [option]... group file...
chgrp [option]...--reference=rfile file...
选项: -R 递归
二.文件权限
1.文件权限说明
文件权限主要针对三类对象进行定义:
owner 属主,u
group 属组,g
other 其他,o
其中逻辑如下:
每个文件对每类访问者都定义有三种常用权限
r 可读 readable
w 可写 writable
x 可执行 excutable
对文件:
r:可使用查看工具获取文件内容
w:可修改文件内容
x:可运行此文件,启动为一个进程(必须是可执行的文件内容)
对目录:
r:可ls查看目录中文件列表
w:可在此目录中创建文件,也可删除文件,此删除权限与被删除的文件权限无关
x:可以cd进入此目录,可以ls -l查看目录中文件的元数据(要有r权限),是目录可访问的最小权限
X:只给目录x权限,不给无执行权限的文件x权限
数字法权限表示对应关系:
2.修改文件权限chmod
格式: chmod [option]...mode[,mode]...file...
chmod [opion]...octal-mode file...
chmod [option]...--reference=rfile file... #参考rfile的权限,将file的权限修改同rfile
说明:
mode: who opt permission
who:u,g,o,a
opt:+,-,=
permission:r,w,x
修改指定一类用户的所有权限: u= g= o= ug=
修改指定某一用户某个权限: u+ u- g+ g- o+ o- a+ a- + -
-R:递归修改权限
三.新建文件和目录的默认权限
umask的值用于保留创建文件的默认权限
计算方式:
文件--新建文件的默认权限为666-umask值,若结果存在执行权限(奇数),则将其权限+1,结果为偶数则不变
目录--新建目录的默认权限为777-umask值
root用户umask默认值为002,即目录775 rwxrwxr-x,文件664 rw-rw-r,
非特权用户umask默认是022,即目录755 rwxr-xr-x,文件 644 rw-r--r--
命令:
umask 普通显示当前用户umask值
umask -S 模式方式显示当前用户umask值
umask -p 输出可被调用
umask # 修改umask
持久保存umask方式
全局设置: /etc/bashrc
用户设置: ~/.bashrc
四.Linux文件系统特殊权限
Linux中还有三种特殊权限:SUID,SGID,Sticky
1.特殊权限SUID
前提:进程有属主和属组,文件有属主和属组
普通可执行程序文件的权限逻辑:
①任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有执行权限
②启动为进程后,其进程的属主为发起者,进程的属组为发起者所属的组
③进程访问文件时的权限,取决于进程的发起者
二进制可执行文件上SUID的权限功能:
①可执行文件能不能发起进程取决于发起者对程序文件是否有执行文件
②启动为进程后,该进程的属主为程序文件的原属主
③SUID只对二进制可执行程序有效
④SUID设置在目录上无意义
SUID权限设定:
chmod u+s file...
chmod 4xxx file...
chmod u-s file...
2.特殊权限SGID
二进制可执行文件上SGID的权限功能:
①能不能启动为进程取决于发起者对程序文件是否有执行权限
②启动为进程后,进程的属组为原程序文件的属组
SGID权限设定:
chmod g+s file...
chmod 2xxx file
chmod g-s file...
目录上SGID权限功能:
默认情况下,用户创建文件时,其属组为此用户所属主组,一旦某目录被设定了SGID,则对此目录有些权限的用户在此目录中创建文件所属的组为此目录的属组,通常用于创建一个协作目录
3.特殊权限Sticky位
具有写权限的目录通常用户可以删除该目录中的任何权限,无论该文件的权限或拥有权,在目录设置Sticky位,则只有文件的所有者或root才能删除该文件
sticky设置在文件上无意义
Sticky权限设定:
chmod o+t dir...
chmod 1xxx dir
chmod o-t dir...
4特殊权限数字法
五.设定文件特殊属性
设置文件的特殊属性,可以用于防止root用户删除或修改
chattr +i 不能删除,改名,更改
chattr +a 只能追加内容,不能删除,改名
lsattr 显示特定属性
六.访问控制列表ACL
1.功能
实现灵活的权限管理,除了文件的所有者,所属组和其他人,可以对更多的用户设置权限
centos7默认创建的xfs和ext4文件系统具有ACL功能
centos7之前版本,默认手工创建的ext4文件系统无ACL功能,需手动添加:
tune2fs -o acl /dev/sdb1
mount -o -acl /dev/sdb1 /mnt/test
ACL生效顺序为: 所有者,自定义用户,所属组|自定义组,其他人(优先匹配原则,匹配到后面的不再进入判断)
2.相关命令
setfacl 设置ACL权限
getfacl 查看设置的ACL权限
mask权限:
mask只影响除所有者和other之外的人和组的最大权限
mask需要用户的权限进行逻辑与运算后,才能变成有效的权限
用户或组的设置必须存在于mask权限设定范围内才会生效
添加范例: setfacl -m u:user: r test.txt #给user加上读的对应权限
删除范例: setfcal -x u:user test.txt #删除test上wang的所有权限
setfacl -b test.txt #删除test上所有acl
--set选项会吧原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能像-m一样只是添加ACL就可以
注:ACL可用于root不小心取消了内部命令执行权限的恢复
3.备份和还原
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上 -p 参数,但是常见的tar等备份工具不会保留目录和文件的ACL信息