如果使用子 shell,将密码以纯文本形式传递给脚本是否安全?

如果使用子 shell,将密码以纯文本形式传递给脚本是否安全?

我有一个脚本,它对名为 PASSWD 的变量执行读取 -p 操作:

smbclient -L 192.1.1.1 -U username%$PASSWD

我相信我无法在历史记录中看到这一点。在这个链接上,它说执行 ps 的人将能够看到密码字符串? 安全地将参数传递给脚本

但是如果脚本持续的时间可以忽略不计(几毫秒)这不是没什么大不了的吗?

答案1

您可以阅读man smbclient

-U|--user=username[%password]
           Sets the SMB username or username and password.

           If %password is not specified, the user will be prompted. The client will first check the USER environment variable, then the LOGNAME variable and if
           either exists, the string is uppercased. If these environmental variables are not found, the username GUEST is used.

           A third option is to use a credentials file which contains the plaintext of the username and password. This option is mainly provided for scripts where
           the admin does not wish to pass the credentials on the command line or via environment variables. If this method is used, make certain that the
           permissions on the file restrict access from unwanted users. See the -A for more details.

因此,最好使用-A选项并在文件上设置正确的权限,以使其不可被所有人读取

答案2

如果使用密码的命令是从脚本调用的,则该命令不会出现在您的 shell 历史记录中,这是正确的。这与“子 shell”无关。

然而,在任何地方存储或重复使用纯文本密码并不是真正安全的。

答案3

这是值得讨论的,只要你认为它是安全的。

有些人会将此视为安全风险,而其他人则认为这可以忽略不计。

就我个人而言,我不会这么做。

相关内容