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权限

  

posted on 2019-08-19 14:36  强叔Linux  阅读(1468)  评论(0编辑  收藏  举报