python – 我如何sudo当前进程?

是否可以使用sudo前端(如gksudo)来提升当前进程的权限?我知道我可以做到以下几点:sudo cat /etc/passwd-但我有兴趣这样做:sudo-become-root # magic function/commandcat /etc/passwd-我正在用Python写作.我的用...

是否可以使用sudo前端(如gksudo)来提升当前进程的权限?我知道我可以做到以下几点:

sudo cat /etc/passwd-

但我有兴趣这样做:

sudo-become-root # magic function/command
cat /etc/passwd-

我正在用Python写作.我的用例是我有一个以用户身份运行的程序,但可能会遇到根目录所有的读/写文件.我想提示输入密码,获得root权限,执行我需要的操作,然后再选择删除权限.

我知道我可以将管理逻辑和非管理逻辑分离到单独的进程中,然后以root身份运行管理进程(通过一些通信 – policykit / dbus非常适合这里).但我希望有一个更简单(虽然承认风险更大)的解决方案.

我正在考虑通过sudo运行Solaris的ppriv然后修改当前进程的权限.这似乎是一个hacky-but-workingable往返.但据我所知,linux不提供ppriv.

(我很惊讶这已经不是很明显了;这似乎是一个不常见的事情,似乎并不是一个安全漏洞,允许升级进程升级新进程.)

解决方法:

不幸的是,我不知道如何干净地做你想做的事.我认为你最好的选择是让程序setuid(或在sudo下运行它)然后执行你的脏工作和删除权限,或者fork()并从一个进程中删除权限并保持另一个进程以完成你的root工作.

您正在寻找的是setuid(2)/ setreuid(2)/ setregid(2)/ setgroups(2)调用,但它们都是硬连接的,不允许您在调用期间获得权限.据我所知,你只能用它们来“放弃”特权.

本文标题为:python – 我如何sudo当前进程?

基础教程推荐