![对其他用户执行 sudo 不会保留 DISPLAY 变量](https://linux22.com/image/804783/%E5%AF%B9%E5%85%B6%E4%BB%96%E7%94%A8%E6%88%B7%E6%89%A7%E8%A1%8C%20sudo%20%E4%B8%8D%E4%BC%9A%E4%BF%9D%E7%95%99%20DISPLAY%20%E5%8F%98%E9%87%8F.png)
我有一个 /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