sudo改用pkexec的问题
发表于 : 2023-02-19 11:57
一段脚本里,原来有两处sudo。现在想改用pkexec,怎么在第二处提权时免输密码?
代码: 全选
command -v seahorse # 检测是否安装了 ssh-askpass
sudo apt install seahorse # 如果没有安装,则安装它
代码: 全选
export SUDO_PROMPT="检测到你所要进行的操作,需要更高的权限方可继续。
若要通过本次验证请求,请在下面输入你的用户密码!"
export SUDO_ASKPASS=/usr/libexec/seahorse/ssh-askpass
sudo -A 你要运行的程序
我是写在一个.desktop脚本里,使用bash -c来执行的。脚本有进行分发给不同的人使用。之前适配的第三方发行版改过sudoers,默认sudo免密码。而现在装备兼容别的系统,默认sudo需要输入密码,而且sudoers还被爆改过。基本不可能修改sudoers或者使用sudo -A。至于ssh,更加不方便了。lanxing0821 写了: ↑2023-02-22 21:44 你可以换一种思路,比如你为什么用 pkexec 而不用 sudo ?是不方便在终端输入密码,还是纯粹地只想换个提升用户权限的程序?如果是前者,你完全可以用 sudo 的 -A 选项来替代。
举个例子,假设你的电脑已经安装了 ssh-askpass 辅助程序(如果没有,则可以通过如下命令来安装):那么,你可以在脚本中添加如下内容:代码: 全选
command -v seahorse # 检测是否安装了 ssh-askpass sudo apt install seahorse # 如果没有安装,则安装它
这里解释一下所用到的 sudo 的两个环境变量:代码: 全选
export SUDO_PROMPT="检测到你所要进行的操作,需要更高的权限方可继续。 若要通过本次验证请求,请在下面输入你的用户密码!" export SUDO_ASKPASS=/usr/libexec/seahorse/ssh-askpass sudo -A 你要运行的程序
SUDO_PROMPT 用于定义 sudo 的提示文本;
SUDO_ASKPASS 用于定义 sudo 的 askpass 辅助程序,它必须是一个绝对路径名。一些桌面环境可能自带了 askpass 辅助程序,例如, KDE 的 ksshaskpass (/usr/bin/ksshaskpass)。