📜  在 Linux 中查找具有 SUID 和 SGID 权限的文件

📅  最后修改于: 2022-05-13 01:57:30.836000             🧑  作者: Mango

在 Linux 中查找具有 SUID 和 SGID 权限的文件

SUID(Set-user Identification)和SGID(Set-group Identification)是可以对可执行文件设置的两种特殊权限,这些权限允许正在执行的文件以所有者或组的权限执行。

  • SUID:可执行文件的特殊文件权限。这使其他用户能够以文件所有者的有效权限运行该文件。但不是代表可执行权限的普通 x 。我们将看到用户的s (这表示 SUID)特殊权限。
  • SGID:这也是可执行文件的特殊文件权限,使其他用户可以继承组所有者的有效 GID(组标识符)。这里我们看到的不是 x代表可执行权限,而是s(代表 SGID) 组用户的特殊权限

现在让我们看看如何使用 find命令查找设置了SUIDSGID 的文件:

句法:

find directory -user root -perm -4000 -exec ls -ldb {} \; >/tmp/filename

这里,

Find directory Checks for all mounted parts starting with the specified directory 
-user rootDisplay files owned by root 
-perm -4000Print files only with permissions set to 4000
-exec la -ldb Displays the output of find command in ls –
>/tmp/filenameWrites the result to the filename we specify

注意:对于某些目录如( /etc、/bin、/sbin)或需要root权限的文件,我们应该使用sudo命令来获取root权限。



所以现在我们将展示如何列出所有具有SUID权限的文件:

find directory -user root -perm -4000 -exec ls -ldb {} \; >/tmp/ckprm

上面的命令会将我们所有具有 SUID 权限的文件转储到ckprm文件中。

下图显示了所有具有 SUID 权限的文件:

在 Linux 中查找具有 SUID 和 SGID 权限的文件

现在我们将看到如何列出所有具有SGID权限的文件:

注意:代替文件名,我们可以根据自己的选择使用文件名

Command: find / -user root -2000 -exec ls -ldb {} \; > /tmp/ckprm



由于有更多具有 SGID 权限的文件,我无法显示完整的整个文件。

在 Linux 中查找具有 SUID 和 SGID 权限的文件

要查找同时设置了 SUIDSGID 的文件,请运行以下命令。

find / -user root -perm -6000 -exec ls -ldb {} \; > /tmp/ckprim1

如您所见,只有一个文件同时具有 SUID 和 SGID 权限

删除 SUID 和 SGID:

如果我们要删除具有这两个权限的文件的 SGID 和 SUID 权限,那么对于删除第一个SUID权限:

chmod u-s filename

例如,我们删除了 SUID 文件的权限



在上图中,我们删除了/usr/sbin/ppd文件的权限

您可以看到删除权限前的左侧图像和删除权限后的右侧图像。

在 Linux 中查找具有 SUID 和 SGID 权限的文件

然后删除第一个SGID权限:我们必须做同样的事情,但稍微改变命令。

chmod g-s file_name

例如,我们删除了SGID文件的权限

在上图中,我们删除了/usr/bin/wall文件的权限。

您可以看到删除权限前的左侧图像和删除权限后的右侧图像。

在 Linux 中查找具有 SUID 和 SGID 权限的文件