当前位置:  开发笔记 > 编程语言 > 正文

以编程方式升级linux上的权限

如何解决《以编程方式升级linux上的权限》经验,为你挑选了1个好方法。

我正在创建一个应该在Linux上运行的图形安装程序.安装应包括将文件复制到某些地方/usr.目前,安装程序是用Python编写的.

当我需要复制文件时,如何升级安装程序的权限?我查看了PolicyKit但是

a)PolicyKit似乎没有通用的"安装文件"action-id

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是一个(非常)最后的手段.



1> ConcernedOfT..:

你可能最好用一个前端包装RPM来获取用户选项并调用RPM来完成艰苦的工作.这也为您提供了管理依赖关系的基础架构,并与现有的包管理系统很好地配合.如果您需要在基于.deb的系统(Debian或Ubuntu)上运行,您可能还需要构建一个.deb并在前端放置一些机制来确定哪个包管理系统处于活动状态.

授予随机用户对root权限的访问权限在Linux或Unix系统(或任何多用户系统)上通常被视为不良形式,因为这是一个重大的安全风险.但是,~/bin如果用户没有root访问权限或sudo权限允许用户写入系统区域,则可以选择让用户将其安装在主目录()下.在这种情况下,如果他们想要安装在/ usr/bin中,则可以要求他们以root身份安装它,但如果他们没有root权限,则允许他们将其安装在他们的主目录下供自己使用.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有