对其他用户执行 sudo 不会保留 DISPLAY 变量

对其他用户执行 sudo 不会保留 DISPLAY 变量

我有一个 /etc/sudoers 文件,它在 F18 之前的所有 Fedora 版本中都能正常工作,但我们注意到,在升级到 F18(并安装 FreeIPA,尽管我将在这里展示的案例是使用此文件完成 sudo 处理以最小化变量)时,sudo 不会按照 sudo 的要求保留 DISPLAY 变量:

# sudo -V
:
Environment variables to preserve:
        PYTHONPATH
        :
        HOSTNAME
        DISPLAY
        COLORS
:
# exit
[user2]$ echo $DISPLAY
:1
[user2]$ sudo su - user1
[user1]$ echo $DISPLAY
DISPLAY: Undefined variable.
[user1]$

通常,我们使用 ssh -Y 来回传输显示,但这阻止了我们这样做。我已经排除故障好几天了,但没有成功。有没有其他人遇到过这种情况,或者有什么想法?

更新:进一步的测试表明这可能不是 sudo 的问题,但可能与 su 本身有关:

[user2]$ sudo -u user1 echo $DISPLAY
:1
[user2]$

这会改变什么吗?为什么“su”会开始剥离(部分)环境?

答案1

虽然sudo保留了变量,但使用 会su再次清除它们。不要使用su,这完全没有必要。如果你想要一个 shell,请使用sudo -i

相关内容