如何让 sudo 更好地与 POSIX shell 配合使用?

如何让 sudo 更好地与 POSIX shell 配合使用?

我对我的 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,不是吗?

我希望我在这里表达清楚了。

相关内容