Python os.system()-它是否保留历史记录(bash_历史记录等)?
我正在使用Python os.system()-它是否保留历史记录(bash_历史记录等)?,python,linux,Python,Linux,我正在使用os.system()从我的ubuntu框中调用一些openssl命令。我在第行中指定密码,使其看起来像: //python code os.system("openssl enc -aes-256-cbc ... -k password") 我需要知道是否可以在某个shell/bash历史文件中跟踪此命令(如果我直接在终端中键入此命令也是可能的,所以基本上我是在询问密码处理是否安全)否,bash只记录以交互方式输入的命令 通过操作系统执行的命令不会记录在任何地方。不,但在多用户框中
os.system()
从我的ubuntu框中调用一些openssl命令。我在第行中指定密码,使其看起来像:
//python code
os.system("openssl enc -aes-256-cbc ... -k password")
我需要知道是否可以在某个shell/bash历史文件中跟踪此命令(如果我直接在终端中键入此命令也是可能的,所以基本上我是在询问密码处理是否安全)否,bash只记录以交互方式输入的命令
通过操作系统执行的命令不会记录在任何地方。不,但在多用户框中,通过命令行参数传递密码被视为对安全有害,因为其他用户(原则上)可以通过“ps”等查看密码
通过文件描述符(如stdin)或环境变量传递密码不会受到此攻击;大多数程序都支持这些方法之一。如果它困扰你,考虑使用其中的一个。
当参数没有被记录(只有交互命令被记录,而在一个文件中,在你的主目录中存储了正确的权限)时,通过密码仍然有一个真正的危险。命令行参数和环境变量对于使用正确选项的
ps
计算机的所有用户都是可见的。在不同的操作系统中,执行此操作的具体选项各不相同,因此请查看您的本地文档(在OSX上,ps-wwaxE
会泄漏bean)
传递密码的安全方法是通过管道和openssl的-pass stdin
选项(-k
不安全且过时),或者通过具有仔细设置的权限的文件和-pass file:pathname
选项(当然,将路径名
替换为文件名)。您也可以使用-pass fd:number
,但我不知道这对于os.system
来说有多容易。所有这些都是安全的(可能需要小心),因为您不能窥视管道内部,并且可以正确地保护文件系统
当然,一旦你采取了这些步骤来保护你对openssl的调用,无论它是否被记录都无关紧要无论如何它都是安全的