文件系统的特殊权限

linux中有三种常见权限,还有三种特殊权限:suid,sgid,sticky

特殊权限suid

前提:进程有属主和属组,文件有属主和属组 (占据user的执行权限位,  数字法为4)

1、任何进程一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否具有执行权限

2、启动为进程之后,其进程属主为发起者,进程属组为发起者所属组

3、进程访问文件时的权限,取决于进程的发起者

  a、进程的发起者,同文件的属主:则应用文件属主权限

  b、进程的发起者,属于文件属组:则应用文件属组权限

  c、应用文件其他权限

二进制的可执行文件上suid权限功能

   任何一个可执行文件能不能启动为进程:取决于发起者对程序文件是否有执行权限

   启动为进程之后,其进程的属主为原程序文件的属主

   suid只对二进制可执行程序有效

   suid设置在目录上无意义

suid 权限设定

  chmod u+s file...   chmod 6xxx file chmod u-s file ...

14、用户、组和权限(14)_Linux文件权限

14、用户、组和权限(14)_Linux文件权限_02

去掉s权限后,出现更改密码报错

14、用户、组和权限(14)_Linux文件权限_03

重新赋予suid权限后可更新成功(结论:具有suid的权限;lgw用户调用passwd命令时,能临时获取到/usr/bin/passwd的属主的权限然后对shadows进行更新)

14、用户、组和权限(14)_Linux文件权限_04

特殊权限sgid

二进制可执行文件上的sgid权限功能(占据group的执行权限位,  数字法为2)

  任何一个可执行程序文件能不能驱动为进程:取决于发起者对程序文件是否有执行权限

  启动为进程之后,其进程的属组为源程序文件的属主

sgid权限的设定  chmod g+s file...  chmod 2xxx file  chmod g-s file...

目录上sgid权限功能:默认情况下,用户创建文件时,其属组为此用户所属的主组,一但某目录被设定为sgid,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录。

  14、用户、组和权限(14)_acl权限_05

14、用户、组和权限(14)_Linux文件权限_06

特殊权限sticky

具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权限在马艳玲设置sticky位,只有文件的所有者或root可以删除该文件。(占据other的执行权限位,  数字法为1)

sticky权限设定  chmod o+t dir  chmod 1xxx dir   chmod o-t dir

other对/tmp目录具有写权限,理论上可以删除该目录下任何文件,但是加入sticky权限后,不能

14、用户、组和权限(14)_Linux文件权限_07

14、用户、组和权限(14)_acl权限_08

设定文件的特殊属性

设定文件的特殊属性,可以访问root用户误操作或修改文件

不能删除,改名,更改  chattr  +i

14、用户、组和权限(14)_acl权限_09

只能追加内容,不能删除,改名 chattr  +a

14、用户、组和权限(14)_Linux文件权限_10

列出特定属性  lsattr

14、用户、组和权限(14)_Linux文件权限_11

访问控制列表(ACL)

acl:access control list  实现灵活的权限管理

除了文件所属主、所属组和other,可以对更多用户进行权限设置

centos7默认创建的xfs和ext4文件系统具有acl功能

tune2fs -o acl /dev/sdb1   mount -o acl /dev/sdb1 /mnt

acl生效顺序:所有者、自定义用户、所属组|自定义组,其他人

相关命令setfacl、getfacl

​setfacl  设置acl权限

getfacl  查看设置的acl权限

14、用户、组和权限(14)_Linux文件权限_12

14、用户、组和权限(14)_Linux文件权限_13

14、用户、组和权限(14)_acl权限_14

mask权限

mask只影响所有者和other之外的人和组的最大权限

mask需要与用户的前行进行逻辑与运算后,才能变成有效的权限(effectice permission)

用户或组的设置必须存在于mask权限设定范围内才会生效

setfacl -m mask::rx file

14、用户、组和权限(14)_Linux文件权限_15

14、用户、组和权限(14)_Linux文件权限_16


other设置了acl权限为rwx,导致mask也为rmx

14、用户、组和权限(14)_Linux文件权限_17

14、用户、组和权限(14)_Linux文件权限_18

setfacl --set u::rw,u:wang:rw,g::r,o::- file1   --setfacl选项会把原有的acl项都删除,用新的替代,需要注意的是一定要宝行ugo的设置,不能像-m一样只是添加acl就可以

备份还原acl

主要文件操作命令为cp和mv都支持acl,只要cp命令需要加上-p参数,但是tar等常见的备份工具是不会保留目录和文件的acl信息

备份acl   getfacl -R /tmp/dir > acl.txt

消除acl   setfacl -R -b /tmp/dir

还原acl    setfacl -R  --set-file=acl.txt    /tmp/dir

查看acl   getfacl -R /tmp/dir

14、用户、组和权限(14)_Linux文件权限_19