我对我的 Arch Linux x86-64 系统进行了更改,在该系统中我通过我认为的 POSIX 模式专门运行 bash,通过使用/bin/sh
(链接到'/bin/bash')作为我的登录 shell,而不是按照 Bash 手册中的/etc/profile
定义放入东西,这样它在启动时执行文件,其中包括我的所有别名、提示和类似的东西。ENV=/etc/shrc
/etc/environment
/etc/shrc
基本上,我想完全放弃 Bash 的特定功能,包括/etc/profile
和朋友。
但是问题出现了,在执行时sudo
,没有ENV
变量,因为sudo
显然重置了环境(无论是在解析之后/etc/environment
还是根本没有重置),因此我的所有别名和东西都消失了。sudo -i
基本上是一样的——没有ENV
。
我是否应该认为这对系统安全有益,或者我应该对此采取一些措施,例如让 sudo 保留ENV
变量?
更糟糕的是,su -
(但不是su
)也缺少ENV
,因此所有的东西/etc/shrc
都缺少。所以也许这不仅仅是sudo
问题?我认为 Bash 手册页对此没有具体说明 - 它只是说“当作为名为 sh 的交互式 shell 调用时,bash 会查找变量 ENV...” - 好吧,我做将其作为交互式 shell 调用,不是吗?为什么我的环境中没有 ENV(已使用 进行测试env
)
我不明白如何通过保留一个或多个环境变量来保留所有这些 POSIX 特性,同时又不引入安全漏洞sudo
。至少,它应该保留ENV
,不是吗?
我希望我在这里表达清楚了。