文件中除了普通的读、写、执行权限外,还有一些特殊的权限,我们可以使用 chmod和chown命令来设置。 他们分别是SUID, SGID, Stricky Bit, ACL's, SUDO and SELinux 等,管理员可以使用这些命令管理文件/文件夹。
Linux系统文件的附加权限,通常这些权限被称为”特殊权限”,并且会演示如何查看含有SUID或GUID的文件。
一、什么是SUID和GUID?
SUID(Set owner User ID up on execution),是让 可执行文件的其它用户可以同文件属主用户一样高效执行文件的一种特殊权限,不同于通常的文件执行权限”x”,你会看到文件特殊的权限(指示SUID)。

GUID是让 可执行文件的其它组用户可以同文件属组用户一样高效执行文件的一种特殊权限,不同于通常的文件执行权限”x”,你会看到文件特殊的组权限(指示GUID)。
二、设置SUID
chmod u+s filename 设置SUID位
chmod u-s filename 去掉SUID设置
三、如何使用 find 命令来查看文件的SUID和GUID
命令:
find directory -perm /permissions
需要指出的是,某些目录(例如/etc, /bin, /sbin等)需要root权限才能访问,如果以普通用户执行该命令,需要使用”sudo”来获取root权限。
3.1、查看SUID
以下命令将查找当前目录下所有SUID的文件,使用-perm参数并使用4000选项。
find . [-user root] -perm /4000

当然,可以使用ll -a命令来显示文件的详细信息。

3.2、查看GUID
以下命令将查找当前目录下所有SUID的文件,使用-perm参数并使用4000选项。
find . -perm /2000

如果想查看所有具有SUID或GUID的文件,那么使用如下命令:find . -perm /6000
四、python实现
# 获得suid文件
def get_suid_file(self, pathlib_object_in):
"""
pathlib_object_in:unpack_path + celery_id + id,比如/unpack/d03ae078-2009-4e8b-a435-542c29b68d2c/89fcd2bbbbdafbfd5226e12289c097a66058530b6312786907b7cc999b7ceeda/
"""
output = execute_shell_command("find \"{}\" -perm -4000 -print 2>/dev/null".format(str(pathlib_object_in)))
# 有结果
if output != "":
# 替换路径,分割字符
self.suid_file = output.replace(str(pathlib_object_in), "").split("\n")
# 删除最后一个空字符
self.suid_file.pop(-1)
数据库中:固件ICR-2431 icr-243x.zip(89fcd2bbbbdafbfd5226e12289c097a66058530b6312786907b7cc999b7ceeda)的suid_file:

执行指令:
find "/nas/podding_unpack/d03ae078-2009-4e8b-a435-542c29b68d2c/89fcd2bbbbdafbfd5226e12289c097a66058530b6312786907b7cc999b7ceeda/" -perm -4000 -print 2>/dev/null

五、参考
linux suid命令,Linux系统如何查看文件SUID和SGID_是风让郁金香歌唱的博客-优快云博客
什么是SUID?在Linux/Unix中如何设置SUID - 走看看
本文介绍了Linux系统中SUID和GUID这两种特殊权限的概念及应用。SUID允许其他用户以文件所有者的身份运行可执行文件,而GUID则允许其他组成员以文件所属组的身份运行。文章还展示了如何通过chmod命令设置这些权限,并提供了使用find命令查找具有SUID或GUID的文件的方法。

被折叠的 条评论
为什么被折叠?



