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

时间:2009-03-27 16:28:40

标签: linux root

有一种标准方法(跨Linux发行版)可以启动一个进程(来自另一个应用程序),要求提供root密码以提升权限吗?

我尝试使用gksudo(默认安装在ubuntu中),但在其他发行版(或其他桌面管理器下)可能没有安装。

4 个答案:

答案 0 :(得分:3)

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

su - -c command

编辑:不在ubuntu上, root -account被禁用。可能你需要这样的东西:

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

答案 1 :(得分:3)

我建议查看PolicyKit这是大多数现代发行版用来完成此任务的内容。

答案 2 :(得分:1)

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

现在,在基于KDE的发行版中,你将拥有 kdesu ,而在基于GNOME的发行版中,它将是 gksu gksudo 。 Kerberized域中的计算机具有 ksu

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

答案 3 :(得分:1)

传统上,如果您的应用程序需要允许用户提升权限,它会安装自己的单一用途的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可执行文件也是安全漏洞的常见来源,因此请小心操作。