我正在创建一个应该在Linux上运行的图形安装程序。安装应该包括将文件复制到/usr
中的某些地方。目前安装程序是用Python编写的。以编程方式在Linux上升级特权
当我需要复制文件时,如何升级安装程序的权限?我看着PolicyKit但
- 一)似乎没有成为一个通用的“安装文件”动作id为PolicyKit的
- b)该行动的ID,我可以使用,我不认为他们在发行版中是标准的
我也看了一下PAM,我有使用libpam的代码,但我似乎无法用它做任何事情。验证用户身份(通过提供用户名和密码)后,我没有对/usr
的写入访问权限。我尝试更改我的用户os.setuid(0)
认证后,但我从操作系统得到一个错误。
此外,奇怪的是,我提供给pam_start
的服务似乎并不重要。只要用户名和密码正确,我就可以通过我想要的任何东西。我看到我有/etc/pam.d/sudo
。下面的代码被简化了,密码被正确地存储在一个pam_conversation
对象中,我确实传递了一个句柄对象。
pam_start("my_user", "my_pass", "sudo_garbage_12345");
作品一样好
pam_start("my_user", "my_pass", "sudo");
也就是说,他们都成功。
作为最后的手段,我可以执行gksudo
或kdesudo
但我不希望被绑定到这些程序。要求用户用sudo
调用我的安装程序是(非常)最后的手段。
所以,让我直接得到这个...你想能够给任何用户无限制(根)访问权限? – davethegr8 2009-12-17 21:39:22
我想通过允许用户输入密码来模拟sudo。如果用户无法通过使用sudo获得权限,则他们也不能使用我的安装程序执行此操作。我只是想给他们一个noob友好的方式来使用sudo。 – jonr 2009-12-17 21:59:43