密码实际上是否隐藏在' read -s'在Linux / Unix shell中?

时间:2017-10-11 11:53:22

标签: linux bash shell unix scripting

#!/bin/bash

read -p " Enter Username :" USERNAME
read -p " Enter Password :" -s PASSWORD

ps -ef 没有显示任何详细信息,它会隐藏密码。但是,从信息安全的角度来看,这真的是一种安全的方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

是的,只要会话使用SSH等安全传输或本地传输,就应该是安全的。它有助于read是一个shell内置命令。

正在运行的bash会话中的变量值不会导出到bash进程本身的环境中。

要注意的一件事: 如果您export PASSWORD环境变量然后启动外部命令,则会公开变量的内容(例如ps e可见)。

你可以这样测试:

read -s PASSWORD
export PASSWORD
sleep 999

搜索"睡眠"过程,你会看到PASSWORD及其价值。 环境变量不是将数据传递给进程的保密方式。

如果要处理存储在环境变量中的机密数据,请确保坚持使用shell内置命令,例如echo