2010-08-06 52 views
2

我使用os.system()来从我的ubuntu盒子调用一些openssl命令。我指定的连接密码,所以它看起来像:Python os.system() - 它是否保留历史记录(bash_history等)?

//python code 
os.system("openssl enc -aes-256-cbc ... -k password") 

我需要知道,如果有可能在一些shell/bash的历史文件来跟踪这个命令(因为如果我直接键入此命令到终端是可能的,所以基本上我在问密码处理是否安全)

回答

1

不,bash只记录交互输入的命令。

通过os.system执行的命令不记录在任何地方。

1

不,不,但是在多用户盒,传递通过命令行参数的密码被认为是不好的安全性,因为其他用户可以(原则上)看到他们通过“PS”等

传通过文件描述符(例如stdin)或环境变量的密码不受此攻击的影响;大多数程序都支持这些方法之一。如果它困扰你,考虑使用其中之一。

1

尽管没有记录参数(只记录交互式命令,并且这是在主目录中以正确权限存储的文件),但传递密码仍然存在实际的危险。对于使用ps且具有正确选项的计算机的所有用户,都可以看到命令行参数和环境变量。执行此操作的确切选项因操作系统而异,因此请检查您的本地文档(在OSX上,它是ps -wwaxE溢出的bean)。

传递密码的安全方式或者是通过管道和-pass stdin选项的OpenSSL(-k是不安全的,过时的),或者通过文件,精心设置权限和-pass file:pathname选项(使用的名称替换pathname该文件,当然)。您也可以使用-pass fd:number,但我不知道这是多么容易适应os.system。以上所有都是安全的(可能要小心),因为你不能偷看管道,并且你可以正确保护文件系统。

当然,一旦你采取了这些步骤来保证你对openssl的调用,无论它是否被记录都无关紧要; 无论如何,它将是安全的

相关问题