1

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

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

4

4 回答 4

4

我建议查看PolicyKit,它是大多数现代发行版用来完成此任务的工具。

于 2009-03-27T18:05:46.863 回答
3

这适用于任何地方,但不缓存密码并要求root而不是用户密码(就像sudo那样):

su - -c command

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

test -x /usr/bin/sudo && sudo command || su - -c command
于 2009-03-27T16:34:42.603 回答
1

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

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

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

于 2009-03-27T16:35:54.987 回答
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 可执行文件也是安全漏洞的常见来源,因此请务必小心。

于 2009-03-27T18:20:56.217 回答