SUID 位不起作用,mate-screensaver-dialog
SUID bit doesn't work, mate-screensaver-dialog
我有一个 st运行ge 问题,正在尝试 运行 使用 SUID 位以 root 权限进行 mate-screensaver-dialog:
[root@localhost ~]# ls -l /usr/libexec/mate-screensaver-dialog
-rwsr-s--t. 1 root root 72920 мар 22 2021 /usr/libexec/mate-screensaver-dialog
然后,启动它(从用户 user
)并寻找有效的 uid 给了我用户的信息,运行 这个可执行文件:
[root@localhost ~]# ps aux | grep screensaver-dialog
user 3673 0.6 0.4 894304 38504 pts/3 Sl+ 19:29 0:00 /usr/libexec/mate-screensaver-dialog
当用户会话被屏幕保护程序超时锁定时,就会发生这种情况。那么谁能帮助我,为什么 SUID 位不适用于这种情况?我很乐意提供任何建议。
使用 OS:红色OS 7.3,x64
浏览 github 上的源代码我发现 this 评论:
Initializations that potentially take place as a priveleged user:
If the executable is setuid root, then these initializations
are run as root, before discarding privileges.
此评论涉及的功能:
static gboolean privileged_initialization(int* argc, char** argv)
从主函数中调用here。
除此之外,privileged_initialization
函数调用 setuid.h
header in the same directory 中的另一个函数 hack_uid
,上面有类似的注释:
If we've been run as setuid or setgid to someone else (most likely root)
turn off the extra permissions so that random user-specified programs
don't get special privileges.
基于此,我假设可执行文件遵循在 运行 实际功能之前删除提升权限的常见做法。这是一种减少潜在安全漏洞影响的流行方法。
实际上,这意味着可执行文件可能 运行 作为 root 启动,因为 SUID 位,执行任何实际需要 root 权限的任务,然后将权限降低到用户级别。
我有一个 st运行ge 问题,正在尝试 运行 使用 SUID 位以 root 权限进行 mate-screensaver-dialog:
[root@localhost ~]# ls -l /usr/libexec/mate-screensaver-dialog
-rwsr-s--t. 1 root root 72920 мар 22 2021 /usr/libexec/mate-screensaver-dialog
然后,启动它(从用户 user
)并寻找有效的 uid 给了我用户的信息,运行 这个可执行文件:
[root@localhost ~]# ps aux | grep screensaver-dialog
user 3673 0.6 0.4 894304 38504 pts/3 Sl+ 19:29 0:00 /usr/libexec/mate-screensaver-dialog
当用户会话被屏幕保护程序超时锁定时,就会发生这种情况。那么谁能帮助我,为什么 SUID 位不适用于这种情况?我很乐意提供任何建议。
使用 OS:红色OS 7.3,x64
浏览 github 上的源代码我发现 this 评论:
Initializations that potentially take place as a priveleged user: If the executable is setuid root, then these initializations are run as root, before discarding privileges.
此评论涉及的功能:
static gboolean privileged_initialization(int* argc, char** argv)
从主函数中调用here。
除此之外,privileged_initialization
函数调用 setuid.h
header in the same directory 中的另一个函数 hack_uid
,上面有类似的注释:
If we've been run as setuid or setgid to someone else (most likely root) turn off the extra permissions so that random user-specified programs don't get special privileges.
基于此,我假设可执行文件遵循在 运行 实际功能之前删除提升权限的常见做法。这是一种减少潜在安全漏洞影响的流行方法。
实际上,这意味着可执行文件可能 运行 作为 root 启动,因为 SUID 位,执行任何实际需要 root 权限的任务,然后将权限降低到用户级别。