gpt4 book ai didi

bash - 在 Unix 上隐藏命令行参数的 secret

转载 作者:行者123 更新时间:2023-11-29 08:42:25 25 4
gpt4 key购买 nike

我有一个脚本,它在自身内部启动一个带有 secret 参数的命令。例如:

#!/bin/bash
command-name secret

在运行命令时,我可以阅读 ps -ef | grep 命令名 这是 secret 。

有没有什么方法可以通过ps -ef 混淆命令行参数来隐藏 secret ?

最佳答案

  1. 首先,您不能隐藏命令行参数。在启动程序时(在程序有机会执行之前),它们仍然对其他用户可见参数的运行时更改)。好消息是您仍然可以通过使用替代方法来保密:

  2. 使用标准输入:

     mySecret='hello-neo' printenv mySecret | myCommand
  3. 如果您想将 secret 与主脚本分开,请使用专用文件(请注意,建议您使用全盘加密并确保文件具有正确的 chmod权限):

     cat /my/secret | myCommand
  4. 使用环境变量 ( with caveats )。如果您的程序可以读取它们,请执行以下操作:

     mySecret='hello-neo' myCommand
  5. 使用临时文件描述符:

     myCommand <( mySecret='hello-neo' printenv mySecret )

在最后一种情况下,您的程序将像 myCommand/dev/fd/67 一样启动,其中 /dev/fd/67 的内容是您的 secret (hello-neo 在这个例子中)。


在上述所有方法中,请注意不要将命令留在 bash 命令历史记录中 (~/.bash_history)。您可以通过从脚本(文件)运行命令,或者每次都以交互方式提示自己输入密码来避免这种情况:

read -s secret
s=$secret printenv s | myCommand # approach 2
myCommand <( s=$secret printenv s ) # approach 3
secret=$secret myCommand # approach 4
export secret && myCommand # another variation of approach 4

关于bash - 在 Unix 上隐藏命令行参数的 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3830823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com