如何su才能不受到当前shell的任何环境变量的污染

40 views
Skip to first unread message

宋 为

unread,
Oct 21, 2016, 6:33:33 AM10/21/16
to sh...@googlegroups.com

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

最近需要su到其它帐号上去做事情。但是su出来的shell总是受到输入su的shell的各种环境变量的污染,比如说会残留原来的XAUTHORITY、XDG_SESSION_ID等环境变量,导致有图形界面的程序出现各种问题。

找到的唯一正常的姿势是从tty登录,开一个byobu,然后切回桌面,从终端里面su进去,链接到那个byobu,设定DISPLAY,启动应用程序。我觉得这样太麻烦了,要打好多字。

有没有更加正确的姿势?

(命令“su - user”,也会残留下之前说的那些变量)

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJYCe7iAAoJEIADh2DFg7VOUuwQAJGWhZFO/y7j4KOa5qT5QG6y
CZq33neSq2iTk8d4fGyKIbNWR+6BJBrAKARUVdpk5Zf1/cU8YeoMwj3svswldxR0
iz1/jkSTvNiZ8Tr1FA3go/k939kvbx49XMj1s/tqjqFOWG+HiBgT7aYEO3EQsFbN
+TZt7MMaJipSAVdO/nPD5ZELIPYIO3z7DR/QT8kuPe6+/UDF66cylcfp/OpZtv/o
JkMz0xgQqrrjAFIwoyQEQuKxGMB9Z+R6i/7/9YIBLOnxNw8KEul2NNlAuKsMhqtP
+8UYXDV2R6DpASBFgMxYRyliozzUZCKgJlX2dIXS+3S0XlFfkr73ysqw27NfCiIb
hJPQaNhnuQplNGUs1UexIa+Y0JUGj//0zXGNsbhrRzKbKxTHIIkqapvFPHgUb0sv
24TUs+zN++5E1WXZ/VrvRb6cx4qvRZlWSryyhfepESNzJry2dyVO/y3C5YnVXXJ0
8dGyPev/+1ZlsnqB+XoiXqnZDqq8NtStsLmbta067zPGhTTCU88oXqCpRTJHLb3s
Dza9/BLq5cuQ9AKAB37Lh+T/m21VL/U8OkwCg0CWWYgD6AiegRuJAarEPzV9jePj
JAkg3YedNnruYd5/DWi57AAkFIjJ9RDjRA4TRGHwJ7zQfHd0PMAnRX8tKz6XrS5v
rSBDZNT/P5IAMX25XnSl
=2AfX
-----END PGP SIGNATURE-----

Zhang Cheng

unread,
Oct 21, 2016, 7:14:39 AM10/21/16
to sh...@googlegroups.com
$ env -i your-command

$ man env
       -i, --ignore-environment
              start with an empty environment



--
-- You received this message because you are subscribed to the Google Groups Shanghai Linux User Group group. To post to this group, send email to sh...@googlegroups.com. To unsubscribe from this group, send email to shlug+unsubscribe@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/shlug?hl=zh-CN
---
您收到此邮件是因为您订阅了 Google 网上论坛的“Shanghai Linux User Group”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到shlug+unsubscribe@googlegroups.com
要查看更多选项,请访问 https://groups.google.com/d/optout



--
Cheng,
Best Regards

Chaos Eternal

unread,
Oct 21, 2016, 7:28:04 AM10/21/16
to sh...@googlegroups.com
跑题一把
我看到无数人习惯 su 而不是 su -
这是一个非常不好的习惯。
在任何情况下都应该su - 而不是su 


--
-- You received this message because you are subscribed to the Google Groups Shanghai Linux User Group group. To post to this group, send email to sh...@googlegroups.com. To unsubscribe from this group, send email to shlug+un...@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/shlug?hl=zh-CN

---
您收到此邮件是因为您订阅了 Google 网上论坛的“Shanghai Linux User Group”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到shlug+un...@googlegroups.com
要查看更多选项,请访问 https://groups.google.com/d/optout



--
Cheng,
Best Regards

--
-- You received this message because you are subscribed to the Google Groups Shanghai Linux User Group group. To post to this group, send email to sh...@googlegroups.com. To unsubscribe from this group, send email to shlug+un...@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/shlug?hl=zh-CN
---
您收到此邮件是因为您订阅了Google网上论坛上的“Shanghai Linux User Group”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到shlug+un...@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

Shell Xu

unread,
Oct 21, 2016, 8:36:41 AM10/21/16
to shlug
我一般都是sudo


--
-- You received this message because you are subscribed to the Google Groups Shanghai Linux User Group group. To post to this group, send email to sh...@googlegroups.com. To unsubscribe from this group, send email to shlug+unsubscribe@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/shlug?hl=zh-CN

---
您收到此邮件是因为您订阅了 Google 网上论坛的“Shanghai Linux User Group”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到shlug+unsubscribe@googlegroups.com
要查看更多选项,请访问 https://groups.google.com/d/optout



--
Cheng,
Best Regards

--
-- You received this message because you are subscribed to the Google Groups Shanghai Linux User Group group. To post to this group, send email to sh...@googlegroups.com. To unsubscribe from this group, send email to shlug+unsubscribe@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/shlug?hl=zh-CN

---
您收到此邮件是因为您订阅了Google网上论坛上的“Shanghai Linux User Group”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到shlug+unsubscribe@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

--
-- You received this message because you are subscribed to the Google Groups Shanghai Linux User Group group. To post to this group, send email to sh...@googlegroups.com. To unsubscribe from this group, send email to shlug+unsubscribe@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/shlug?hl=zh-CN

---
您收到此邮件是因为您订阅了Google网上论坛上的“Shanghai Linux User Group”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到shlug+unsubscribe@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout



--
彼節者有間,而刀刃者無厚;以無厚入有間,恢恢乎其於游刃必有餘地矣。
blog: http://shell909090.org/

宋 为

unread,
Oct 21, 2016, 10:31:09 AM10/21/16
to sh...@googlegroups.com

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

不顶用,试验了“env -i su - user”,仍然看到了污染进来的XDG_xxx变量

在 2016年10月21日 22:14, Zhang Cheng 写道:
> $ env -i your-command > > $ man env > -i, --ignore-environment > start
with an empty environment >
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJYCiaSAAoJEIADh2DFg7VOTV0P/AmJMYN+QWnrAAe20WsU8jC9
4aaJirCAqvJpKS9W1RV5T6vJq7ePEXaoW6creQGHQJfB0AVwPJGZB0p/Ax2rggLe
i1PV5Srd4BCvUA3trwq0TqF/o/T9xVESeI7tyU2399vSAgwSCBu/l/rXMJKcjObd
WWu2wcySmuLbpJJxHc5NguR15+GnpP3yfCcr9chK8YJomBz8PZqluaErNxJYueXD
8QyTTpQ8lTnDpsGdk0BKKtqpJVLVTzJAO62tu1fhlZ6xQ26dLUFvCJepfAvrkhHh
g4Za08qtmYWoaneSWBu6O+74ZSbbymHFkd6Duudbl4WAvuDSCxmPyKnxlqOGuGV4
tw9PjRYAM+nQ8oLJOLUnyqbjJXLfw4OnJqgyreQbmuog+kU0FYvXQN/s1rNuy3p3
0lINxgJdBRhYtF2jB4qyLkvx45yUfgLAbi70fhV60I52ODLMiremTYvkOzOLLX2P
psFVaEbTna7DeYHoqiQT0LCrLZbzjxmkZbMTUghetsFpK9BFyttehFyyUix7/PxL
zjknnjTcsFAiIqdzdacfEzv2ObIYx3a2Z1JRAfSO1DWsx+TSSmYltMhVo7rFFLhw
JhHp20tcDbv6VnZ0ZLfX13sgxqBFksJJLqdc3ttmzDtDqatXhA9Vrwe3G4yKs1DX
h/zuMxC/vpQwpIrrE+MO
=fRVb
-----END PGP SIGNATURE-----

Zhang Cheng

unread,
Oct 21, 2016, 11:03:46 AM10/21/16
to sh...@googlegroups.com

On Fri, Oct 21, 2016 at 10:31 PM, 宋 为 <leo_s...@outlook.com> wrote:
不顶用,试验了“env -i su - user”,仍然看到了污染进来的XDG_xxx变量

​1、先 env -i env,确认 env 是否真的把所有的环境变量都 unset 了。
2、请确认 $user 的 $SHELL 启动时读取了哪些rc文件(如profile、bashrc等),XDG_xxx 是否来自这些rc文件。​



--
Cheng,
Best Regards

James

unread,
Oct 21, 2016, 11:06:02 AM10/21/16
to sh...@googlegroups.com

简单测试了一下,只要加了 - 环境变量就没有带过去了,甚至并不需要用到env -i。

很可能他的那些所谓带过去的变量是从rc里读来的。

--
-- You received this message because you are subscribed to the Google Groups Shanghai Linux User Group group. To post to this group, send email to sh...@googlegroups.com. To unsubscribe from this group, send email to shlug+un...@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/shlug?hl=zh-CN
---
您收到此邮件是因为您订阅了Google网上论坛上的“Shanghai Linux User Group”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到shlug+un...@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

James

unread,
Oct 21, 2016, 11:09:05 AM10/21/16
to sh...@googlegroups.com

----------8<-----------------------------

[xuxd@lion ~]$ export test=just-a-test
[xuxd@lion ~]$ echo $test
just-a-test
[xuxd@lion ~]$ su
Password:
[root@lion xuxd]# echo $test
just-a-test
[root@lion xuxd]# exit
exit
[xuxd@lion ~]$ su -
Password:
[root@lion ~]# echo $test

[root@lion ~]# exit
logout
[xuxd@lion ~]$ sh
sh-4.3$ echo $test
just-a-test
sh-4.3$ exit
exit
[xuxd@lion ~]$ env -i sh
sh-4.3$ echo $test

sh-4.3$ exit
exit
[xuxd@lion ~]$

----------8<-----------------------------

James

unread,
Oct 21, 2016, 11:10:15 AM10/21/16
to sh...@googlegroups.com

另外,man su 是这么说的:

       -, -l, --login
              Start the shell as a login shell with an environment similar to a real login:

                 o      clears all the environment variables except TERM


宋 为

unread,
Oct 21, 2016, 7:10:22 PM10/21/16
to sh...@googlegroups.com

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

被su的用户是新建的,从tty登录和ssh登录都没有问题。env -i env没有输出。

考虑到污染进来的变量只有XDG_xxx,怀疑是桌面环境的奇特作用。系统是Debian
8,DE是Cinnamon。


在 2016年10月22日 02:03, Zhang Cheng 写道:
> > On Fri, Oct 21, 2016 at 10:31 PM, 宋 为 <leo_s...@outlook.com
<mailto:leo_s...@outlook.com>> wrote: > > 不顶用,试验了“env -i su -
user”,仍然看到了污染进来的XDG_xxx变量 > > > ​1、先 env -i env,确认 env
是否真的把所有的环境变量都 unset 了。 > 2、请确认 $user 的 $SHELL
启动时读取了哪些rc文件(如profile、bashrc等),XDG_xxx 是否来自这些rc文件。​
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJYCqA/AAoJEIADh2DFg7VOxjoP/jUcE0IQbCvK5V4XZryqZCYH
jkbH8G0WNmCAPOZj9S3Hrl+ky9PACsUxhTKQMTX96CHsxYZ/aRkpqGTdtpzuD8Pa
dZIP7zIbXEeBXnegeXf2i73rgJmDfyMZkbAuf5163vfF1PNx4q/WTyJ8ao0vwcY1
D36mBR9Fi8ZEYnPh/Vk1s9Ha87RdVRcmHrHaYeRD1zH0TGH4sn2CMSlBCUlkexJA
xB3i0Z1kTU5uFp5U6YORC+VLIPWSWkK6vxjOPar2bJ9QQogwp1EFlDecNqdd1m2w
fWpQ3qseFIGk8plXigJ4sv7KPfRTJ0xB3dHalRIc8Ai0L7iiXUYgGhskuTROb2dh
pEMRKOWkSwe5OHgI0M88tXgYMNSxylPumQ8sLYRPaYPzA9R8bRL0g+FYHLb2Efnb
qXaOK4h01ME6mrRvKDbOjUc3kHM3QEOlUrGK76fwUh0qKJwyHbdv0Az5CiWfZSEi
CaqnL02rIO3nM3s5/So5R0mD2dzR1N1xnMj9jNUI464Sp6A7vbluwU/oZx8/pX5C
o3piTUxpcr/tdsHT3IE97phqF212boCGCJsilbpphiTOESz2y6ALcuMDH3DchwLs
8D2+/IERcAKJ92thU5q1kpibqBkwQn7ATte8EiCPJY23Q6gukotMfJ+TQ6h01S8b
vfC3SqJw8VeIqs4cEICQ
=B465
-----END PGP SIGNATURE-----

宋 为

unread,
Oct 21, 2016, 7:13:56 PM10/21/16
to sh...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

肯定不是rc或profile,登录管理器直接登录、ssh/tty登录都是正常的。

在 2016年10月22日 02:05, James 写道:
> 简单测试了一下,只要加了 - 环境变量就没有带过去了,甚至并不需要用到env -i。
>
> 很可能他的那些所谓带过去的变量是从rc里读来的。
>
>
> On 2016年10月21日 23:03, Zhang Cheng wrote:
>>
>> On Fri, Oct 21, 2016 at 10:31 PM, 宋 为 <leo_s...@outlook.com
>> <mailto:leo_s...@outlook.com>> wrote:
>>
>> 不顶用,试验了“env -i su - user”,仍然看到了污染进来的XDG_xxx变量
>>
>>
>> ​1、先 env -i env,确认 env 是否真的把所有的环境变量都 unset 了。 2、请确认 $user 的
>> $SHELL 启动时读取了哪些rc文件(如profile、bashrc 等),XDG_xxx 是否来自这些rc文件。​
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJYCqEYAAoJEIADh2DFg7VOSKMQAIxreu2lCVRxEzx1aYMhfX2g
1cuKl/oSwTtsPry8IhWWsvIswcbiMOhSdfyppNnXtWsaW3EY0YNaH0fdAkENOuKL
wbKxz1Dtci2Z8ESLALgZY7FIzdFS9oheo4yfdEuSnT7C+u99TWrww3b3Wq1MS/mF
WkG/t35OC105ZO1wltbMWbAAV1BKqhNrcrnl0J0TUJKJCtGVsnWIi3PEd1rbJVJw
cdGwGvUxPsHPnZTKBPouBw8w1uvMXWUknwMYUVNnDvgbR3aIHg4GZqJl+7YAT8Tu
aqbz91nI7/P7JJ4hSPquvJCV3Y4s4Zcl19fX7X6Y3GJUwMp5sQMsjqx4ral3DQtu
FrM4Sc2SE+Q0V6TaPwrdWT5G0zujak+ad/Dmxxzq0oPX0LHtFy4UOogayZ2z9oPS
RPYOIAYOKLrZew5fvDZ89aFkWBU/br5wJpTsAsw6vJdIqZRCjngO5RK3/a4QR0Y7
+xnXmDyDML4dnKtjIlQeOI3Mv/0LfiDMoUMdpaB0VwiYnT1bNVz0BsxhRnbb8br3
AFptH38cyDp+cIeVdLBy6NwQR7QoZzfeQqIVkx08kgBqd4mepMYUtScA+VZuIiCJ
q/Ry+INN4HptujQkhazbQ4Oybtbn8PTIKH8wpQvSb9iGD+6byedl+giEin/3FVv8
urD+dLqcx+FHZZO6YKqL
=Ju4Z
-----END PGP SIGNATURE-----

Plain_Text

unread,
Oct 21, 2016, 9:32:07 PM10/21/16
to sh...@googlegroups.com

  一般 "su - UserName" 都没问题,你的环境可能比较复杂。你可以这样试试:

su -c "/bin/bash -l" - UserName

  或许管用。




Shell Xu

unread,
Oct 21, 2016, 10:56:58 PM10/21/16
to shlug
debian testing,刚刚测试了一下。su -还有几个变量,trace下来是rc读入的。env -i env没有变量了。
桌面环境lxde。

On Sat, Oct 22, 2016 at 7:10 AM, 宋 为 <leo_s...@outlook.com> wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

被su的用户是新建的,从tty登录和ssh登录都没有问题。env -i env没有输出。

考虑到污染进来的变量只有XDG_xxx,怀疑是桌面环境的奇特作用。系统是Debian
8,DE是Cinnamon。


在 2016年10月22日 02:03, Zhang Cheng 写道:
> > On Fri, Oct 21, 2016 at 10:31 PM, 宋 为 <leo_s...@outlook.com
<mailto:leo_songwei@outlook.com>> wrote: > >     不顶用,试验了“env -i su -

user”,仍然看到了污染进来的XDG_xxx变量 > > > ​1、先 env -i env,确认 env
是否真的把所有的环境变量都 unset 了。 > 2、请确认 $user 的 $SHELL
启动时读取了哪些rc文件(如profile、bashrc等),XDG_xxx 是否来自这些rc文件。​
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJYCqA/AAoJEIADh2DFg7VOxjoP/jUcE0IQbCvK5V4XZryqZCYH
jkbH8G0WNmCAPOZj9S3Hrl+ky9PACsUxhTKQMTX96CHsxYZ/aRkpqGTdtpzuD8Pa
dZIP7zIbXEeBXnegeXf2i73rgJmDfyMZkbAuf5163vfF1PNx4q/WTyJ8ao0vwcY1
D36mBR9Fi8ZEYnPh/Vk1s9Ha87RdVRcmHrHaYeRD1zH0TGH4sn2CMSlBCUlkexJA
xB3i0Z1kTU5uFp5U6YORC+VLIPWSWkK6vxjOPar2bJ9QQogwp1EFlDecNqdd1m2w
fWpQ3qseFIGk8plXigJ4sv7KPfRTJ0xB3dHalRIc8Ai0L7iiXUYgGhskuTROb2dh
pEMRKOWkSwe5OHgI0M88tXgYMNSxylPumQ8sLYRPaYPzA9R8bRL0g+FYHLb2Efnb
qXaOK4h01ME6mrRvKDbOjUc3kHM3QEOlUrGK76fwUh0qKJwyHbdv0Az5CiWfZSEi
CaqnL02rIO3nM3s5/So5R0mD2dzR1N1xnMj9jNUI464Sp6A7vbluwU/oZx8/pX5C
o3piTUxpcr/tdsHT3IE97phqF212boCGCJsilbpphiTOESz2y6ALcuMDH3DchwLs
8D2+/IERcAKJ92thU5q1kpibqBkwQn7ATte8EiCPJY23Q6gukotMfJ+TQ6h01S8b
vfC3SqJw8VeIqs4cEICQ
=B465
-----END PGP SIGNATURE-----
--
-- You received this message because you are subscribed to the Google Groups Shanghai Linux User Group group. To post to this group, send email to sh...@googlegroups.com. To unsubscribe from this group, send email to shlug+unsubscribe@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/shlug?hl=zh-CN
---
您收到此邮件是因为您订阅了 Google 网上论坛的“Shanghai Linux User Group”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到shlug+unsubscribe@googlegroups.com
要查看更多选项,请访问 https://groups.google.com/d/optout



--

依云

unread,
Oct 21, 2016, 11:37:23 PM10/21/16
to sh...@googlegroups.com
On Fri, Oct 21, 2016 at 10:33:22AM +0000, 宋 为 wrote:
> 最近需要su到其它帐号上去做事情。但是su出来的shell总是受到输入su的shell的各种环境变量的污染,比如说会残留原来的XAUTHORITY、XDG_SESSION_ID等环境变量,导致有图形界面的程序出现各种问题。

你能否说明一下,你是如何查看环境变量的?su - user env 能列出来些啥?

> 找到的唯一正常的姿势是从tty登录,开一个byobu,然后切回桌面,从终端里面su进去,链接到那个byobu,设定DISPLAY,启动应用程序。我觉得这样太麻烦了,要打好多字。
>
> 有没有更加正确的姿势?
>
> (命令“su - user”,也会残留下之前说的那些变量)

--
Best regards,
lilydjwg

Linux Vim Python 我的博客:
http://blog.lilydjwg.me/
--
A: Because it obfuscates the reading.
Q: Why is top posting so bad?

Liang Guo

unread,
Oct 22, 2016, 2:33:23 AM10/22/16
to sh...@googlegroups.com
2016-10-22 11:36 GMT+08:00 依云 <lily...@gmail.com>:
> On Fri, Oct 21, 2016 at 10:33:22AM +0000, 宋 为 wrote:
>> 最近需要su到其它帐号上去做事情。但是su出来的shell总是受到输入su的shell的各种环境变量的污染,比如说会残留原来的XAUTHORITY、XDG_SESSION_ID等环境变量,导致有图形界面的程序出现各种问题。
man su:

-m, -p, --preserve-environment
Preserve the current environment, except for:

$PATH
reset according to the /etc/login.defs options ENV_PATH
or ENV_SUPATH (see below);

$IFS
reset to "<space><tab><newline>", if it was set.

If the target user has a restricted shell, this option has
no effect (unless su is called by root).

Note that the default behavior for the environment is the following:

The $HOME, $SHELL, $USER, $LOGNAME, $PATH, and $IFS
environment variables are reset.

If --login is not used, the environment is copied,
except for the variables above.

If --login is used, the $TERM, $COLORTERM, $DISPLAY, and
$XAUTHORITY environment variables are copied if they were set.

Other environments might be set by PAM modules.






--
Liang Guo
http://guoliang.me/

宋 为

unread,
Oct 22, 2016, 8:34:50 AM10/22/16
to sh...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

在 2016年10月22日 14:36, 依云 写道:
> 你能否说明一下,你是如何查看环境变量的?su - user env 能列出来些啥?

下面贴出输出:(从用户leo的shell,su一个用户pri的shell)

迷之不能运行:
> leo@leo-ThinkPad:~$ su - pri env 密码: /usr/bin/env: /usr/bin/env: 无法
> 执行二进制文件

换个姿势:
> leo@leo-ThinkPad:~$ su - pri -c /usr/bin/env 密码: XDG_VTNR=7
> XDG_SESSION_ID=1 SHELL=/bin/bash TERM=xterm USER=pri
> MAIL=/var/mail/pri
> PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
> PWD=/home/pri LANG=zh_CN.UTF-8 SHLVL=1 HOME=/home/pri
> XDG_SEAT=seat0 LANGUAGE=zh_CN:zh LOGNAME=pri DISPLAY=:0
> XAUTHORITY=/home/leo/.Xauthority COLORTERM=mate-terminal _=/usr/bin
> /env

其中XDG_SESSION_ID、XAUTHORITY显然是污染进来的,但是不知道是从哪儿来的。

下面这段是ssh产生的shell的env,这个就非常干净:
> pri@leo-ThinkPad:~$ /usr/bin/env REMOTEHOST=localhost
> XDG_SESSION_ID=4 SHELL=/bin/bash TERM=xterm-256color SSH_CLIENT=::1
> 48096 22 HUSHLOGIN=FALSE SSH_TTY=/dev/pts/2 USER=pri
> LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=4
0;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=3
4;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*
.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:
*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz
=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01
;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;
31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;
31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;3
1:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;
35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01
;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=0
1;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm
=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv
=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi
=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=0
1;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=0
1;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=0
0;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=0
0;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
>
>
MAIL=/var/mail/pri
> PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
> PWD=/home/pri LANG=zh_CN.UTF-8 SHLVL=1 HOME=/home/pri
> LANGUAGE=zh_CN:zh LOGNAME=pri SSH_CONNECTION=::1 48096 ::1 22
> XDG_RUNTIME_DIR=/run/user/1003 _=/usr/bin/env

最开始我是进tty登录,开一个byobu,然后detach,切回图形界面,su进pri用
户,连接byobu,然后就能用上正常的环境。后来发现ssh也可以,且没有那么麻
烦。但是sshd引入了新安全问题,我只得配置iptables……而且sshd并不能解答我
的问题:这些污染的变量是从哪儿来的?

系统:稳定版Debian 8。
> leo@leo-ThinkPad:~$ cat /etc/os-release PRETTY_NAME="Debian
> GNU/Linux 8 (jessie)" NAME="Debian GNU/Linux" VERSION_ID="8"
> VERSION="8 (jessie)" ID=debian HOME_URL="http://www.debian.org/"
> SUPPORT_URL="http://www.debian.org/support"
> BUG_REPORT_URL="https://bugs.debian.org/"




-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJYC1zVAAoJEIADh2DFg7VO1IcQAKDfCJUjEq7g3fkWXlgVxir4
F2vhFlKE97O4ymNfWZiE9YVT0gUCJncJRDBNTMX8fzZdP4wK4QZdkm57PIdEGPFD
rXNWp6jkxTVdYphp3+TBNB2IFZ+4r6Dpl/bzZAeYe3GTmZh/l80oR7tMIGOP8NNg
X0lo+M0VBwpnQfWB4cS3964j+AgeqHcSldHcBO5gw3ZSIXIsKQM8sQa5MqZIElCJ
Q+Y6To9F4IZZ6j35pSz8yxGdzpJ9Zdl5+oI5pSo6uymfYskND9mPALDZ7ZRTLUwQ
Eml8RiHNm1CeapriGX6LducPci4esKKCN9RSRT9DFBCKEM1kbNZ5uO7pF581uT2l
/I1WTa3J/g0fslHT+nRqEc5A64/IxtNNEmYzk1lg0SELwUYB/JVfnXEghVwV4mHE
gA0NVR2AWPQwgLb4I3NUL6oG+0IaOgIuSj+NCU1v1fEw2f4+jgHssNOOth6t+UE4
PsJl9hCuXzBuPIugJIWWmB1PoVr06KCGLl49GG7gsTnO1QEhwLhOIiIXWXWzVOX+
KHeQre4eohScxsBFWfdgzk8rn7Lrjty+lPxDN7goqOJBf67xZHqIp/Sa7uqBgrm3
70/cfjZ1L722mHSvLY/PE61KSpGmHNlSujGfCntycdRINWuslbHj86DxDwAPOKA3
fyyOJTVIhcdCU1pjfUOQ
=9BrQ
-----END PGP SIGNATURE-----

宋 为

unread,
Oct 22, 2016, 8:43:48 AM10/22/16
to sh...@googlegroups.com
感觉Enigmail的自动折行 好像毁了输出,再贴一遍:

迷之不能运行:
> leo@leo-ThinkPad:~$ su - pri env
> 密码:
> /usr/bin/env: /usr/bin/env: 无法执行二进制文件

直接su出来的情况:
> leo@leo-ThinkPad:~$ su - pri -c /usr/bin/env
> 密码:
> XDG_VTNR=7
> XDG_SESSION_ID=1
> SHELL=/bin/bash
> TERM=xterm
> USER=pri
> MAIL=/var/mail/pri
> PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
> PWD=/home/pri
> LANG=zh_CN.UTF-8
> SHLVL=1
> HOME=/home/pri
> XDG_SEAT=seat0
> LANGUAGE=zh_CN:zh
> LOGNAME=pri
> DISPLAY=:0
> XAUTHORITY=/home/leo/.Xauthority
> COLORTERM=mate-terminal
> _=/usr/bin/env

这两个变量“XAUTHORITY,
XDG_SESSION”显然是污染进来的。(上网一搜,整个世界都在研究如何在su的过程中保留它们,而我却需要摆脱它们)

ssh出来的shell(非常干净):
> pri@leo-ThinkPad:~$ env
> REMOTEHOST=localhost
> XDG_SESSION_ID=5
> SHELL=/bin/bash
> TERM=xterm-256color
> SSH_CLIENT=::1 48114 22
> HUSHLOGIN=FALSE
> SSH_TTY=/dev/pts/2
> USER=pri
> LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
> MAIL=/var/mail/pri
> PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
> PWD=/home/pri
> LANG=zh_CN.UTF-8
> SHLVL=1
> HOME=/home/pri
> LANGUAGE=zh_CN:zh
> LOGNAME=pri
> SSH_CONNECTION=::1 48114 ::1 22
> XDG_RUNTIME_DIR=/run/user/1003
> _=/usr/bin/env

系统:稳定版Debian

宋 为

unread,
Oct 22, 2016, 8:49:07 AM10/22/16
to sh...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

这个可能是真正的原因

在 2016年10月22日 17:33, Liang Guo 写道:
> If --login is used, the $TERM, $COLORTERM, $DISPLAY, and
> $XAUTHORITY environment variables are copied if they were set.
>
> Other environments might be set by PAM modules.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJYC2ApAAoJEIADh2DFg7VO00wP/1AFTrzwIWNv/PPI0nYFEi2H
YFnkoENlkyx0WxEYsZ1I5FdGm2lVI8SiDBhSrhBqaVfbe/XRMBHxXSAb8/mf3J9h
QxZW6mCBch8TnOmcamHryyB0pshoFPgX3/lQHeWV9KzrXO2O+QxqTZHXRudwPcPB
mZSzzZ3L9xyZUAjnG4qNDfiZ9g7ll7MJADHzoI1slB6PbQPjUabZR+6MmhLvQiZu
+4H0imXQjKdJx69q6qDeD8C5lCAVz9bSRhI1Xr2oFnTNOPwAiurR1aIGbNh/DED+
v8sHKTSpZO+XQEoXT9xf6VHhd+9jCuwmrLs+1xfD2EgFeEa7NzTL1g5DcM4PFXfW
5vFI8SM0DcJfwE74PSBcJDhaR6iYGNMMEh50Jk9uSsZcwZpllh4fs7d2wQ/1QZot
RU/c3nue3DR8w8V48Z9vRhTZR3cS7CfCVE8ogz0UxVHSpyks582qWqYgskb236f1
JssGhXdjUAsbC/MkKwGjhKyIiaDzJuRw3NKCMxdEN8Hh1Rnuayl5mq5JGYZ8BErp
L7cpViWZOvPyAlWyABFsjyzXdAMZjihHTyLB8zw3NumaOp3WsVdWz5vL1u/9KPTp
76XLzbCU45kbu/796TId/fxQFeP3c/l2oshr52aiGd9AVFhPBrEIrQKg1UyBUr8Q
G1zWvg9ueTlc2qtP8P9R
=0CNX
-----END PGP SIGNATURE-----

依云

unread,
Oct 22, 2016, 8:55:25 AM10/22/16
to sh...@googlegroups.com
On Sat, Oct 22, 2016 at 12:43:42PM +0000, 宋 为 wrote:
> 感觉Enigmail的自动折行 好像毁了输出,再贴一遍:
>
> 迷之不能运行:
> > leo@leo-ThinkPad:~$ su - pri env
> > 密码:
> > /usr/bin/env: /usr/bin/env: 无法执行二进制文件

我写错命令了……

> 直接su出来的情况:
> > leo@leo-ThinkPad:~$ su - pri -c /usr/bin/env
> > 密码:
> > XDG_VTNR=7
> > XDG_SESSION_ID=1
> > SHELL=/bin/bash
> > TERM=xterm
> > USER=pri
> > MAIL=/var/mail/pri
> > PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
> > PWD=/home/pri
> > LANG=zh_CN.UTF-8
> > SHLVL=1
> > HOME=/home/pri
> > XDG_SEAT=seat0
> > LANGUAGE=zh_CN:zh
> > LOGNAME=pri
> > DISPLAY=:0
> > XAUTHORITY=/home/leo/.Xauthority
> > COLORTERM=mate-terminal
> > _=/usr/bin/env
>
> 这两个变量“XAUTHORITY,
> XDG_SESSION”显然是污染进来的。

那你看看 /etc/pam.d/su 或者类似的文件是怎么写的呢?

> (上网一搜,整个世界都在研究如何在su的过程中保留它们,而我却需要摆脱它们)

喵哈哈哈,我有时也会遇到类似的情况……

宋 为

unread,
Oct 22, 2016, 10:37:59 AM10/22/16
to sh...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

顺着pam查,一路查到这么一句话:
> The $XDG_SESSION_ID environment variable is initialized. If
> auditing is available and pam_loginuid.so was run before this
> module (which is highly recommended), the variable is initialized
> from the auditing session id (/proc/self/sessionid). Otherwise, an
> independent session counter is used.

https://www.freedesktop.org/software/systemd/man/pam_systemd.html

还真是复杂

在 2016年10月22日 23:54, 依云 写道:
>
> 那你看看 /etc/pam.d/su 或者类似的文件是怎么写的呢?
>
>> (上网一搜,整个世界都在研究如何在su的过程中保留它们,而我却需要摆脱它们)
>
> 喵哈哈哈,我有时也会遇到类似的情况……
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJYC3mvAAoJEIADh2DFg7VOrvkQAMeTIohcdznk25IyWN6xF8Sw
J8YGuyXauK1qcyPNT5YfYFUinudkFMRAUtIvqoEJlUtwJNCUxc/CTiINV1u/ovQ7
oxLn1djIymGLjH5fYVq1aUBM34+M9OZl8FWs+H7P3PLoAp5ZasOz4NJGLf9luTPd
JFmTxS11NC6jweBblRig6udqB2kI4IDBxBWOJq8p/1htPSq480HX1eLeJn5CGJhI
j3EqS6ZbL+NP+ex6Xbk4vTKRdB9mJW1TR/JbKAfsBRYjPFXzQOtItqgmtxnUp+bR
iTzdmOsSF/0562XY2eNcRlddE3mJ7iOZouW1wI4u1DfV70gr1rCwB/i3858uS6F/
2o/yDSVZhQDidwo9t716ksnu2K1wl8bcTok4D+8Xr/4k0TFbV2jS8+sj0oqG5zT7
UKnHif1KMWsln+JL3uzwrPrQmvmvqOj9Kb5d9ApN4mKb2gKmBdZw7drwtMTCKxHG
lbeMmLhPk5HAKu7yjDoBrpJadQTwFNlUImLETAe/ulQU5EYm30vfsbAL03cgCZXB
k/lB6ScL1aTMVs1OvloBtADPRFZypcarTjOHwEhRFKvfoQIrOzgg1ETaUj1XsE9I
pNtxwXIJrGgE1gWnUdAm0z4isXO9qsiSvnMCPO6P2zPP9bwrlP6ZrX9YQLBk1X16
8/qco7w+XYIKrXEvlCis
=aE6b
-----END PGP SIGNATURE-----

Chaos Eternal

unread,
Oct 23, 2016, 9:24:51 AM10/23/16
to sh...@googlegroups.com
这个应该是tmux给你的。

--
-- You received this message because you are subscribed to the Google Groups Shanghai Linux User Group group. To post to this group, send email to sh...@googlegroups.com. To unsubscribe from this group, send email to shlug+un...@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/shlug?hl=zh-CN

---
您收到此邮件是因为您订阅了 Google 网上论坛的“Shanghai Linux User Group”群组。

Chaos Eternal

unread,
Oct 23, 2016, 9:26:45 AM10/23/16
to sh...@googlegroups.com
 update-environment variables
                     Set a space-separated string containing a list of environment variables to be copied into the session environment when a new session is created or an existing ses‐
                     sion is attached.  Any variables that do not exist in the source environment are set to be removed from the session environment (as if -r was given to the
                     set-environment command).  The default is "DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY".

Reply all
Reply to author
Forward
0 new messages