我正在尝试在用户之间设置xauth
cookie 转发,以便 GUI 程序可以通过 SSH 以任何用户身份运行。我已将以下行添加到/etc/pam.d/su
和/etc/pam.d/sudo
:
session optional pam_xauth.so
但是,运行 GUI 程序仍然root
失败:
pi@raspberrypi:~ $ echo $DISPLAY
localhost:10.0
pi@raspberrypi:~ $ xauth list
raspberrypi/unix:12 MIT-MAGIC-COOKIE-1 XXX
raspberrypi/unix:11 MIT-MAGIC-COOKIE-1 XXX
raspberrypi/unix:0 MIT-MAGIC-COOKIE-1 XXX
raspberrypi/unix:10 MIT-MAGIC-COOKIE-1 XXX
pi@raspberrypi:~ $ leafpad
# leafpad window opens
pi@raspberrypi:~ $ sudo su
root@raspberrypi:/home/pi# echo $DISPLAY
localhost:10.0
root@raspberrypi:/home/pi# xauth list
xauth: file /root/.Xauthority does not exist
root@raspberrypi:/home/pi# leafpad
PuTTY X11 proxy: Unsupported authorisation protocol
leafpad: Cannot open display:
root@raspberrypi:/home/pi# touch /root/.Xauthority
root@raspberrypi:/home/pi# xauth add $(xauth -f ~pi/.Xauthority list | tail -1)
root@raspberrypi:/home/pi# leafpad
# leafpad window opens
我没有任何用户的任何~/.xauth/import
/文件。~/.xauth/export
我在 SSH 客户端上运行 PuTTY+Xming(这并不重要)。我期待为我pam_xauth
创造/root/.Xauthority
,但那没有发生。知道为什么吗?
答案1
我不确定自 2018 年以来情况是否发生了变化,但现在在 2021 年,在 Debian Bullseye 上,问题中描述的配置更改运行良好。pam_xauth
创造一个带有 cookie 的临时文件并设置$XAUTHORITY
为指向此文件。
该问题可能与这个 GitHub 问题关于setuid()
呼叫(设置用户 ID)。sudo
它工作的版本是1.9.4。