如何强制策略套件代理显示有关命令行参数的完整信息

如何强制策略套件代理显示有关命令行参数的完整信息

我正在使用 Ubuntu Mate 20.04,并pkexec在需要时以管理员权限启动应用程序。

但是,当策略代理套件要求授权请求时,没有足够的信息来做出决定。例如,如果我运行

pkexec sh -c 'echo hello'

我会看到这个提示:

策略套件代理

请注意,没有关于我尝试执行的命令的信息。因此,它看起来与危险的命令相同

pkexec sh -c 'rm -rf /'

如何通过配置或更改代理来调整我的设置,以便我可以看到有关要求我授权的操作的更多信息(例如完整命令行)?

答案1

负责带参数的完整命令行的变量是command_line。要更改它,可以按照man pkexec页面建议创建自定义策略。

但是,我最终编辑了 LC_MESSAGES。我的语言环境是 en_US,因此我执行了以下步骤:

  1. 复制/usr/share/locale-langpack/en_GB/LC_MESSAGES/polkit-1.mo
  2. 解压它msgunfmt polkit-1.mo -o polkit-1.po
  3. 編輯polkit-1.po
msgid "Authentication is needed to run `$(program)' as the super user"
msgstr "Authentication is needed to run '$(program)' as the super user"

msgid "Authentication is needed to run `$(program)' as the super user"
msgstr "Authentication is needed to run '$(program)' ('$(command_line)') as the super user"

以及几条类似的线条。

  1. 打包回来msgfmt polkit-1.po -o polkit-1.mo
  2. 把它放入/usr/share/locale/en_US/LC_MESSAGES/polkit-1.mo
  3. 重新启动 polkit 守护进程systemctl restart polkit

现在我可以获得完整的命令 在此处输入图片描述

相关内容