文件特殊权限

╰半橙微兮° 2022-07-12 04:50 464阅读 0赞

1. SetUID

  • 只有可以执行的二进制文件才能设定SUID权限。
  • 命令的执行者要对该可执行文件拥有x(执行)权限。
  • 命令的执行者在执行该文件时,身份会临时变为它的文件所有者(在执行程序的过程中灵魂附体为文件的属主)。
  • SetUID权限只在该文件执行过程中有效,也就是说身份改变只在程序执行过程中生效)。

其实,passwd命令所对应的可执行文件就拥有SetUID权限。

  1. [root@localhost tmp]# ll /usr/bin/passwd
  2. -rwsr-xr-x. 1 root root 25980 2 22 2012 /usr/bin/passwd

可以发现,/usr/bin/passwd的文件所有者的执行权限是小写字母s(如果是大写字母S,就有问题) ,这就说明该可执行文件拥有SUID权限。正是因为如此,普通用户才能更改自己的密码,普通用户更改自己的密码时,身份临时变为超级用户root,所以才能将密码变更写入/etc/shadow(权限为000)的文件。

cat 命令没有SUID权限,所以普通用户不能查看 /etc/shadow 文件的内容。要想让普通用户也能使用cat命令查看 /etc/shadow 文件,可给cat命令赋予SUID权限。

1.1 设定SUID权限

数字4代表SUID,给一个可执行文件(一般为命令)设置SUID权限的方法有两种:

  • chmod 4755 文件名
  • chmod u+s 文件名

常见用法:

  1. cat命令赋予SUID权限:
  2. chmod 4755 /bin/cat
  3. chmod u+s /bin/cat

1.2 删除SUID权限

删除SUID权限的方法也有两种:

  • chmod 755 文件名
  • chmod u-s 文件名

常见用法:

  1. chmod u-s /bin/cat
  2. 删除cat命令的SUID权限

1.3 危险的SUID权限

作为一名合格的Linux系统管理员,必须定期对系统中默认应该具有SUID权限的可执行文件进行列表,并定期检查是否有新的可执行文件被设置了SUID权限。

千万不要对vi命令或vim命令设置SUID权限,否则,所有的普通用户都能使用vi命令编辑一些特殊文件(如/etc/passwd),进而将自己的UID改为0(普通用户就会拥有超级用户root的所有权限),甚至对整个系统安全造成更加严重的灾难。

2. SetGID

2.1 SetGID针对可执行的二进制文件的作用

  • 只有可执行的二进制文件才能设置SGID权限。
  • 命令执行者要对该文件拥有x(执行)权限。
  • 执行该二进制文件时,组身份临时变为该文件的所属组。
  • SGID权限只在该可执行文件执行过程中有效,也就是说组身份改变只在程序执行过程中生效。

locate命令就具有SGID权限。

  1. [root@localhost ~]# ll /usr/bin/locate
  2. -rwx--s--x. 1 root slocate 31492 3 12 2015 /usr/bin/locate

可以发现,locate命令的所属组的执行权限是小写字母s。

  1. [root@localhost etc]# ll /var/lib/mlocate/mlocate.db
  2. -rw-r-----. 1 root slocate 2310094 12 2 08:17 /var/lib/mlocate/mlocate.db

2.2 SetGID针对目录的作用

  • 普通用户必须对此目录拥有rx的权限,才能浏览和进入该目录。
  • 普通用户进入该目录时,普通用户的有效组会变为该目录的所属组。
  • 如果普通用户对该目录拥有w权限,新建文件的默认属组是这个目录的所属组。

2.3 设定SGID权限

数字2代表SGID,设置SGID权限的方法有两种:

  • chmod 2755 文件或文件夹名
  • chmod g+s 文件或文件夹名

2.4 删除SGID权限

删除SGID权限的方法有两种:

  • chmod 755 文件或文件夹名
  • chmod g-s 文件或文件夹名

2.5 危险的SGID权限

对于可执行文件,设置SGID权限也是一种很危险的操作。应该尽量避免人为地给可执行文件赋予SGID权限,并定期检查系统中可能存在的SGID权限的文件,列出清单以供排查。

3. Sticky BIT

3.1 SBIT粘着位的作用

  • SBIT权限只针对目录有效。
  • 普通用户对该目录拥有wx权限,即普通用户有进入目录和写权限。
  • 如果没有SBIT权限,因为普通用户拥有w权限,所以可随意删除该目录中的文件,包括其他用户建立的文件。一旦该目录设置了SBIT粘着位权限,除了root用户可以删除目录中的所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但无法删除其他用户建立的文件。

Linux系统中默认就具有SBIT权限的目录是 /tmp 目录。

  1. [root@localhost etc]# ll -d /tmp
  2. drwxrwxrwt. 5 root root 4096 1 27 17:12 /tmp

可以发现,/tmp目录的执行权限是小写字母t。

3.2 设定SBIT权限

数字1代表SBIT,设置SBIT权限的方法有两种:

  • chmod 1755 目录名
  • chmod o+t 目录名

3.3 删除SBIT权限

删除SBIT权限的方法有两种:

  • chmod 777 目录名
  • chmod o-t 目录名

发表评论

表情:
评论列表 (有 0 条评论,464人围观)

还没有评论,来说两句吧...

相关阅读

    相关 文件特殊权限

    1. SetUID 只有可以执行的二进制文件才能设定SUID权限。 命令的执行者要对该可执行文件拥有x(执行)权限。 命令的执行者在执行该文件时,身份会

    相关 特殊权限管理

    用户在执行进程命令时,需要调用一个属主和属组是用户本身的 `bash` 进程,同时对应 一个属主和属组是 `root` 的文件,在执行时一其他用户的身份执行命

    相关 特殊权限

    SUID 谈到SUID不得不说进程的安全上下文,那么何为进程的安全上下文?在我看来,进程的安全上下文应该分成上文和下文。 我们先来谈谈进程安全的上文,我们都明白,用户有