不。

不。

我正在编写一个 shell 脚本,该脚本使用基本身份验证来访问 Web 服务。我不想每次运行脚本时都必须输入用户名和密码,但我也不想在脚本中以纯文本形式显示该组合。我知道用户名和密码在通过网络发送之前会进行 base64 编码。有什么方法可以预先对其进行编码并将其包含在 shell 脚本中吗?

答案1

不。

嗯,从技术上来说你可以传递原始Authorization标头使用--header。但其用处恰恰是. Base64 只是一个编码用于避免二进制数据损坏,但它没有隐藏任何东西base64–任何阅读您脚本的人都可以立即撤销该操作,例如通过使用命令。

换句话说,即使你这样做,密码也会仍然采用纯文本形式。

答案2

您可以让脚本从文件中读取密码。您可以确保脚本以有效的用户 ID 运行,该用户 ID 赋予它读取该文件的权限,并设置权限,以便其他人无法读取。

您可能需要克服一些困难才能使用设置用户标识,这意味着可以读取和执行脚本的用户无法读取密码文件。Unix.stackexchange 有一个好答案关于这个问题。对于你的情况,不要将有效 UID 提升为 root,只需使用为此目的创建的普通 ID(例如,脚本以 wally 身份运行,wally 拥有 password.txt (r--------) wally 没有特殊权限,但需要写入日志或输出文件以与他人共享)

相关内容