首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >strace和polkit

strace和polkit
EN

Unix & Linux用户
提问于 2020-11-27 14:07:38
回答 1查看 129关注 0票数 2

我有一个拒绝以root用户身份运行的程序,他希望“真正的用户”运行它,但他希望在执行过程中权限升级以修改一些受保护的路径。

使用strace,只要我不调用-f参数,就可以了,但是当我需要它时,polkit窗口就不会出现,程序会抱怨没有特权,只是结束了

我不知道什么是setUID,但是命令是$ strace -f script.bash

EN

回答 1

Unix & Linux用户

发布于 2020-12-02 17:42:29

Strace使用帕斯莱系统调用来跟踪进程。

出于安全原因,使用塞图德机制的特权程序(如pkexec )不能使用那些特权,如果进程跟踪它不是根(或者在Linux上没有SYS_PTRACESYS_ADMIN 能力)。

当您运行strace script.bash时,strace将成功地跟踪运行脚本的shell (它没有任何额外的特权),并且不会跟踪shell脚本运行的任何程序。因此,当脚本运行pkexec时,pkexec以所有特权运行。

但是strace -f script.bash将跟踪运行脚本的shell和脚本运行的每个程序。当脚本运行pkexec时,pkexec将不具有setuid特权,它会发出抱怨并退出。

跟踪pkexec及其运行的一切的一种方法是将strace作为root运行。

但是您不希望运行sudo strace -f script.bash,因为它将脚本(和pkexec)作为root运行。

相反,在以常规用户身份启动脚本后,请将strace附加到脚本中。修改脚本如下:

代码语言:javascript
复制
#!/bin/bash
echo please run sudo strace -f -p $ while this script is doing its read
read -n 1 -r -s reply
if [[ $reply == [Yy] ]]; then
    pkexec "$NAME_INST" "$@"
fi
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/621804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档