有一种标准方法(跨 Linux 发行版工作)来启动一个进程(从另一个应用程序),要求输入 root 密码以提升权限?
我尝试使用 gksudo(它默认安装在 ubuntu 中),但在其他发行版下(或在其他桌面管理器下)可能无法安装。
我建议查看PolicyKit,它是大多数现代发行版用来完成此任务的工具。
这适用于任何地方,但不缓存密码并要求root而不是用户密码(就像sudo
那样):
su - -c command
编辑:不在禁用root帐户的 ubuntu 上。可能你需要这样的东西:
test -x /usr/bin/sudo && sudo command || su - -c command
传统上,如果您的应用程序需要允许用户提升权限,它会安装自己的单一用途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 可执行文件也是安全漏洞的常见来源,因此请务必小心。