Я делаю сценарий оболочки, который обращается к веб-сервису с базовой аутентификацией. Я не хочу вводить свое имя пользователя и пароль при каждом запуске скрипта, но я также не хочу, чтобы внутри скрипта была комбо в виде простого текста. Я знаю, что имя пользователя и пароль кодируются в base64 перед их отправкой по сети. Есть ли способ, которым я мог бы заранее закодировать его и включить в сценарий оболочки?
2 ответа
Нет.
Ну, технически вы можете передать необработанный заголовок Authorization
используя --header
. Но полезность этого была бы точно равна нулю . Base64 - это только кодировка, используемая для предотвращения повреждения двоичных данных, но она ничего не скрывает - ее можно изменить в любой момент, например, с помощью команды base64
, любой, кто читает ваш сценарий.
Другими словами, даже если вы сделаете это, пароль все равно будет в текстовом формате.
Вы можете сделать так, чтобы скрипт прочитал пароль из файла. Вы можете убедиться, что скрипт запущен с эффективным идентификатором пользователя, который дает ему доступ на чтение к этому файлу и устанавливает права доступа, чтобы никто другой этого не делал.
Возможно, вам придется перепрыгнуть через некоторые обручи, чтобы использовать setuid, что означает, что пользователи, которые могут читать и выполнять сценарий, не могут прочитать файл паролей. Unix.stackexchange имеет хороший ответ на эту тему. В вашем случае не повышайте эффективный UID до root, просто используйте обычный ID, созданный только для этой цели (например, скрипт запускается как wally, wally владеет password.txt (r --------) wally не имеет специальных привилиги, но те, которые нужны для записи логов или выходных файлов, чтобы поделиться с другими)