我有一个 bash 脚本,它执行一个 Java 文件。此 Java 文件连接到一个在线服务,它要求我将服务密码作为参数之一输入其中。我不愿意在 bash 文件中输入我的密码,因为任何人都可以看到。我有什么办法可以在 bash 文件中“隐藏”密码,或者对其进行加密之类的操作?
答案1
用来chmod
使脚本只有您自己可读。
chmod go-rwx myscript
如果脚本是理应是公开的,那么就没有好的方法来保护它——在将密码提供给 Java 程序之前仍然必须对其进行解密,并且如果脚本可以做到这一点,那么任何人都可以做到这一点。
如果它由多个用户运行,但在你控制的机器上,那么你可以保护它(chmod)并配置须藤只允许运行该特定脚本。(对于更复杂的东西,可以进行某种形式的客户端和服务器拆分,但目前还没有必要。)但请注意,Java 应用程序的整个命令行将可见于ps -f
只要它在运行。
答案2
不要将密码文本包含在脚本中,而是将其包含在另一个文件中,并使用 I/O 重定向运算符或管道将其传递给 Java 命令。然后,您可以为包含密码的文件分配更严格的权限,或将其放在可移动介质上等。
答案3
既然你提到了
其中一个参数
java 程序的密码是,您可能有兴趣知道大多数 unix 系统上的所有命令行参数都是公开的,系统上的任何人都可以读取。您可能锁上了窗户,而谷仓门却敞开着。
为了演示,请尝试:
ps aux | less -S
您应该能够使用箭头键向右浏览并查看系统上执行的所有进程的完整命令行。