Как скрыть отображаемый пароль во время процесса grep в unix

#java #shell #unix

#java #оболочка #unix

Вопрос:

Ниже приведены фрагменты кодов,

 String Password = enigma.decrypt(propFile.getProperty("Password"));
String ptr_sec = presto_cli_path   "/presto --server "   presto_https_server   " --keystore-path "   keystore_path   " --keystore-password "   keystore_password   " --catalog "   presto_catalog   " --schema "   presto_schema   " --user "   presto_user   " -f "   queryFile   " --output-format "   outputFromat   " --password "   Password;
Process p_sec = Runtime.getRuntime().exec(new String[] { "bash", "-c", ptr_sec });
  

Приведенный выше код доступен в JAVA JAR. Во время выполнения процесса и при использовании grep

 ps -ef|grep criskrep|grep presto
  

он показывает полную строку, которая также содержит пароль.

Пожалуйста, помогите преодолеть эту проблему.

Комментарии:

1. Итак, вы хотите скрыть пароль в своей оболочке, но не в Java?

2. в Java я его не печатаю. связана ли эта проблема с самим исходным кодом Java? Есть ли какое-то отношение к опции «-c»?

3. Командная строка процессов, запущенных в POSIX-подобных системах, является общедоступной. Не помещайте туда якобы секретную информацию. Найдите способ передать секретную информацию каким-либо другим способом (например, переменные среды или файлы с соответствующими разрешениями).

4. : ( есть ли какой-нибудь другой способ решить эту проблему? например, поместить детали в файл после создания строки и выполнить файл из метода «exec»?

5. Вы можете зашифровать его с помощью какого-нибудь программного обеспечения для шифрования и сохранить это зашифрованное значение в jar. Затем вы расшифровываете его в коде, прежде чем он вам понадобится. Не идеально, но это скроет пароль от a grep .