我编写了一个 bash 脚本来调用一个 Python 脚本,该脚本使用 AES 加密私有数据,将文件路径和 256 位密码作为唯一参数。加密完成后,它会清除历史记录,这样密码就不会放在那里,以防我让终端打开。它看起来像这样:
#!/bin/bash
python aesencrypt.py "$1" "$2"
history -c
echo "" > ~/.bash_history
该~/.bash_history
文件被清除就好了,但是如果我history
在运行此脚本后运行,那么我的所有历史记录仍然存在(直到我退出终端)。有什么我在这里想念的吗?
不要试图清除历史记录——尽管这是在命令行上传递密码暴露它的最明显方式,但该操作给人一种虚假的安全感:在命令行上给出的密码很容易通过其他进程捕获即使根本不涉及历史记录,也可以在同一台机器上运行(即使在不受信任的帐户下!)。
此外,正如您所注意到的,一个 shell 只能修改它自己的内存状态,而不是启动它的单独进程的内存状态(它甚至可能不是同一个 shell,或者根本不是一个 shell!)。
相反,修改 Python 程序的调用约定以直接从 TTY(如 SSH)或环境中读取密码。对于后者,用法可能如下所示:
# assumes you renamed aesencrypt.py to aesencrypt, ran chmod +x, and gave a valid shebang
password="somePassword" aesencrypt outFile
...并且您希望修改 Python 脚本以执行以下操作:
#!/usr/bin/env python
import os, sys
filename = sys.argv[1]
password = os.environ['password']
# ...put the rest of your logic here.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句