我有一个密码存储在环境变量中。
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 …