Linux文件权限管理
说明:通过 ls命令 查看文件的具体权限。
一、文件权限管理命令
1、chown 修改文件的用户和组
用法: chown 用户名:组 filename
选项:
chown -R 修改目录及其内部文件的用户和组
chown --reference=/filename 参照/filename修改文件用户和组
2、chgrp 修改文件的所属组
3、chmod 修改文件权限
用法:
(1) 使用8进制形式
# chmod 777 /filename
(2) 使用ugoa形式,u表示用户,g表示组,o表示其他,a表示所以默认省略
# chmod u=rwx,g=rwx,o=rwx /filename
(3) 参照其他文件权限修改
# chmod --reference=/path/to/somefile
选项:
chmod -R 同时修改目录及内部文件的权限,符号链接文件除外
4、umask 显示或者设置文件的权限掩码
umask的值可以用来定义在创建文件时的权限,新建普通文件的权限为:666 -umask。新建目录的权限为:777-umask。如果所得结果某位存在执行(奇数)权限,则将其权限+1
root的umask是022,普通用户的权限为002
选项:
umask 查看当前用户umask
umask # 设定当前用户的umask为#
umask -S 模式方式显示
umask -p 输出可被调用
二、Linux文件系统上的特殊权限
1、suid 给二进制命令加的权限,脚本文件无效
任何用户执行此可执行文件时,不再以用户自己的身份当作进程的属主,而是继承二进制程序的所有者的权限,SUID目的主要是为了提权限,让普通用户使用命令具有root用户使用命令的权限
/etc/shadow,普通用户无法修改文件,但是可以通过passwd命令修改此文件内容
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
任何用户执行passwd,相当于此文件所有者root执行此文件
suid表现为文件属主执行权限位上的s或S
x:s
-:S
如何设定suid权限
chmod u+s FILE …
或者:假设原来的权限是755
chmod 4755 FILE
2、sgid 给二进制命令加的权限,脚本文件无效
任何用户执行此可执行文件时,不再以用户自己的身份当作进程的属主,而是继承二进制程序的所属组的权限,与suid相对
sgid表现为文件属组执行权限位上的s或S
x:s
-:S
如何设定sgid权限
chmod g+s FILE …
或者:假设原来的权限是755
chmod 2755 FILE
特殊用法:具有sgid的目录,某用户在此目录下创建文件时,新建文件的属组不再是某用户的基本组,而是目录的属组
3、sticky 粘滞位,给目录加的权限,如/tmp文件
默认情况下,对于一个目录权限为777的目录,其他用户可以删除里面别人创建的文件;但如果设置了sticky位,用户可创建文件,可以删除自己的文件,但是无法删除别的用户的文件
sticky表示为文件其他执行权限位上的t或T:
x:t
-:T
如何设定sticky权限
chmod o+t FILE …
或者:假设原来的权限为755
chmod 1755 FILE
三、访问控制列表facl
facl:文件访问控制列表,ext4,xfs文件系统支持facl。facl是附加原有权限模型之上另一层权限控制机制,保存至文件扩展属性信息中。
facl的使用场景:如果某个目录里面的文件特别多,权限比较复杂,要给某一个用户增加访问所有文件的权限,通过chmod,chown传统命令就很难。此时通过facl给该用户增加权限,删除权限,不会破坏此目录其他文件的原有权限。
1、getfacl 查看文件facl属性
2、setfacl 设置文件的facl属性
用法:setfacl [options] 文件名
选项:
setfacl -m u:UserName:rwx 给UserName用户设定rwx权限
setfacl -m g:GroupName:rwx 给属于GroupName组的所有用户设置rwx权限
setfacl -m::rwx 设置mask,除了属主,其他用户的权限不能超过他
setfacl -x u:UserName 取消UserName用户的所有权限
setfacl -x g:GroupName 取消GroupName组用户的所有权限
setfacl -x m: 取消mask
setfacl -b 清空所有的facl权限
setfacl -R 递归,对文件夹内的文件也生效
facl检查顺序:相当于getfacl命令显示结果的顺序
(1)、是否是属主,属主权限最大,不检查facl
(2)、facl列表中user设置的权限
(3)、是否是属组
(4)、facl列表中group设置的权限
(5)、other权限