在 Linux 中查找具有 SUID 和 SGID 权限的文件
SUID(Set-user Identification)和SGID(Set-group Identification)是可以对可执行文件设置的两种特殊权限,这些权限允许正在执行的文件以所有者或组的权限执行。
- SUID:可执行文件的特殊文件权限。这使其他用户能够以文件所有者的有效权限运行该文件。但不是代表可执行权限的普通 x 。我们将看到用户的s (这表示 SUID)特殊权限。
- SGID:这也是可执行文件的特殊文件权限,使其他用户可以继承组所有者的有效 GID(组标识符)。这里我们看到的不是 x代表可执行权限,而是s(代表 SGID) 组用户的特殊权限
现在让我们看看如何使用 find命令查找设置了SUID和SGID 的文件:
句法:
find directory -user root -perm -4000 -exec ls -ldb {} \; >/tmp/filename
这里,Find directory Checks for all mounted parts starting with the specified directory -user root Display files owned by root -perm -4000 Print files only with permissions set to 4000 -exec la -ldb Displays the output of find command in ls – >/tmp/filename Writes 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 权限的文件:
现在我们将看到如何列出所有具有SGID权限的文件:
注意:代替文件名,我们可以根据自己的选择使用文件名
Command: find / -user root -2000 -exec ls -ldb {} \; > /tmp/ckprm
由于有更多具有 SGID 权限的文件,我无法显示完整的整个文件。
要查找同时设置了 SUID和SGID 的文件,请运行以下命令。
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文件的权限
您可以看到删除权限前的左侧图像和删除权限后的右侧图像。
然后删除第一个SGID权限:我们必须做同样的事情,但稍微改变命令。
chmod g-s file_name
例如,我们删除了SGID文件的权限
在上图中,我们删除了/usr/bin/wall文件的权限。
您可以看到删除权限前的左侧图像和删除权限后的右侧图像。