У меня есть скрипт bash, который выполняет файл Java. Этот Java-файл подключается к онлайн-сервису и требует, чтобы в качестве одного из параметров я дал ему свой пароль для сервиса. Мне неудобно вводить свой пароль в файле bash, чтобы кто-нибудь мог это увидеть. Есть ли способ для меня, чтобы "спрятать" пароль в файле Bash, зашифровать его или что-то?
3 ответа
Используйте chmod
чтобы сделать скрипт доступным только для чтения.
chmod go-rwx myscript
Если предполагается, что скрипт является общедоступным, то нет хорошего способа его защитить - пароль все равно необходимо расшифровать перед передачей в программу Java, и если скрипт может это сделать, любой может это сделать.
Если он должен выполняться несколькими пользователями, но на машине, которой вы управляете, вы можете сохранить его защищенным (chmod) и настроить sudo, чтобы разрешить запуск только этого конкретного скрипта. (Для более сложных вещей может быть сделано какое-то разделение на клиент и сервер, но это пока не нужно.) Однако помните, что вся командная строка вашего Java-приложения будет видна в ps -f
пока оно работает.
Поскольку вы упоминаете, что
один из параметров
для программы java - это пароль, вам может быть интересно знать, что все параметры командной строки в большинстве систем unix публикуются для чтения любым пользователем системы. Возможно, вы закрываете окно, оставляя дверь сарая широко открытой.
Для демонстрации попробуйте:
ps aux | less -S
Вы должны быть в состоянии использовать клавиши со стрелками для просмотра вправо и просмотра полных командных строк всех процессов, выполняющихся в вашей системе.
Вместо включения текста пароля в скрипт, включите его в другой файл и используйте операторы перенаправления ввода-вывода или каналы, чтобы получить его для команды Java. Затем вы можете назначить более ограничивающие разрешения файлу, содержащему пароль, или поместить его на съемный носитель и т.д.