sudo上的PAM模块bash脚本破坏了Zenity-/bin/bash失败:退出代码126-/bin/bash失败:出



我一直在摆弄Kubuntu 18.04(基本上是Ubuntu 18.04(上的PAM模块,似乎不明白为什么每当用户执行sudo命令时,我突然在运行bash脚本时出现权限问题。

这是我的/usr/local/bin/test.sh文件代码:

#!/bin/sh
/usr/bin/zenity --info --text="It Works!"

这是我的/etc/pam.d/sudo文件代码:

#%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

以下是我尝试过的一些修复程序,但没有成功:

  • /usr/bin/test.sh权限为:-rwx--x--x 1 root root
  • #!/bin/sh#!/bin/bash都工作
  • 准备"DISPLAY=:0"没有帮助

更新2

好吧,离修复它又近了一步,但仍然存在问题:

我在auth required之后添加了stdout,例如,如果我使用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

最新更新