有一种标准方法(跨Linux发行版)可以启动一个进程(来自另一个应用程序),要求提供root密码以提升权限吗?
我尝试使用gksudo(默认安装在ubuntu中),但在其他发行版(或其他桌面管理器下)可能没有安装。
答案 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)
现在,在基于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可执行文件也是安全漏洞的常见来源,因此请小心操作。