小编ATO*_*OMP的帖子

bash 将环境变量安全地传送到标准输入

我有一个密码存储在环境变量中。

read -s passwd
export passwd
Run Code Online (Sandbox Code Playgroud)

坏处:使用echo $passwd

现在我想将其通过管道传输到接受密码的命令stdin(例如,kinit)。但是,如果 bash 已set -x启用,那么这将泄漏密码。

(warning: will leak password if set -x is enabled)
$ echo $passwd | kinit x@example.com

+ kinit x@example.com
+ echo secretpassword
...(kinit output)...
Run Code Online (Sandbox Code Playgroud)

替代方案:使用printenv passwd

所以我习惯printenv把密码写到stdin,而不是echo。

(is this ok?)
$ printenv passwd | kinit x@example.com

+ kinit x@example.com
+ printenv passwd
...(kinit output)...
Run Code Online (Sandbox Code Playgroud)

当我尝试时,这不会将密码打印到 bash 输出。

问:可以使用吗printenv?

但这真的安全吗?是否有 bash 的配置可能会在某处泄露密码?

编辑:不要认为set …

security bash environment-variables

5
推荐指数
1
解决办法
5949
查看次数

标签 统计

bash ×1

environment-variables ×1

security ×1