最好的方式在不同版本的Linux下以编程方式提升权限?

有一个标准的方法(在Linux发行版上工作)启动一个进程(从另一个应用程序)请求root密码以提升权限?

我试图使用gksudo(它默认安装在ubuntu中),但在其他发行版(或在其他桌面pipe理器下)可能不会安装。

Solutions Collecting From Web of "最好的方式在不同版本的Linux下以编程方式提升权限?"

我会建议看一下PolicyKit这是最现代的发行版用来完成这个。

这在任何地方都可以工作,但不会缓存密码,并要求输入root而不是用户密码(如sudo ):

 su - -c command 

编辑 :不在ubuntu 帐户被禁用。 可能你需要这样的东西:

 test -x /usr/bin/sudo && sudo command || su - -c command 

唯一的默认值是文本模式 。 大多数发行版也安装了sudo

现在,在基于KDE的发行版中,您将拥有kdesu ,而在GNOME中,它将成为gksugksudo 。 Kerberized域中的机器有ksu

您可以尝试使用/etc/sysconfig/desktop来查看哪个是默认桌面。

传统上,如果您的应用程序需要允许用户提升权限,则会安装自己的单用途setuid可执行文件 – 单一用途,意味着它执行所需的任务,而不是用作通用启动程序。

 $ su - # cp `type -p id` /usr/local/bin/root-id # chown root:users /usr/local/bin/root-id # chmod 4750 /usr/local/bin/root-id $ /usr/local/bin/root-id ... euid=0(root) ... 

OTOH setuid可执行文件也是安全漏洞的常见来源,所以要小心谨慎。