问题描述
我一直在使用 Kubuntu 18.04(基本上是 Ubuntu 18.04)上的 PAM 模块,似乎无法弄清楚为什么我突然在运行我的每当用户执行 sudo
命令时的 bash 脚本。
这是我的 /usr/local/bin/test.sh
文件代码:
#!/bin/sh
/usr/bin/zenity --info --text="It Works!"
#%PAM-1.0
session required pam_env.so readenv=1 user_readenv=0
session required pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
# My PAM test runs here
auth required pam_exec.so /bin/bash /usr/local/bin/test.sh
@include common-auth
@include common-account
@include common-session-noninteractive
每当我尝试 sudo -i
时,它都会返回此错误消息:
bin/bash Failed: exit code 126
bin/bash Failed: exit code 126
我仔细检查了 /usr/bin/test.sh
是否拥有所有必要的权限。
我的问题是 - 我在这里做错了什么?我如何正确调用它并触发 zenity 消息框作为测试?
更新 1
以下是我尝试过但没有成功的一些修复:
更新 2
好吧,离修复它又近了一步,但仍有问题:
我在 stdout
之后添加了 auth required
,例如,如果我使用 echo
,它解决了这个问题,但是如果我运行 /usr/bin/zenity --info --text="It Works!"
,它会提示一个新错误:>
Unable to init server: Could not connect: Connection refused (zenity:5046):
Gtk-WARNING **: 05:52:37.200: cannot open display: /bin/bash Failed: exit code 1
解决方法
原因
没有为 Zenity 定义显示来提示消息。
解决方案
为您在 bash 中执行的任何可视化脚本添加显示 - 就我而言,它为 zenity 附加了 --display=:0.0
,如下所示:
#!/bin/sh
/usr/bin/zenity --info --text="It Works!" --display=:0.0