Подавить пароль в режиме отладки сценария оболочки

273
Kamlesh Gallani

Есть ли способ напечатать произвольную строку (например, «xxxx» или «***») вместо пароля при использовании режима отладки оболочки.

Контекст - у меня есть несколько скриптов, которые подключаются к базе данных PostgreSQL. Мы определили пароль в другом скрытом и защищенном файле и затем используем этот файл для экспорта PGPASSWORD в сценарии, чтобы нам не приходилось передавать пароли в качестве явных аргументов. Немногие пользователи (не DBA) имеют разрешение на выполнение сценариев. Если они запустят скрипт в режиме отладки (sh -x), они смогут видеть пароли в текстовом виде.

0
Из любопытства, какую операционную систему вы используете, которая поддерживает сценарии, имеющие только разрешение «выполнять», но не «чтение»? Или вы используете какой-то другой способ предотвратить `cat $ (который myscript)`? grawity 8 лет назад 0
@ Grawity - мне тоже было интересно, как он скрывает файл, к которому он может получить доступ из скрипта: может быть, `setuid` мог бы добиться этого? Любой, кто сможет прочитать сценарий, может увидеть, как пароль извлекается из скрытого файла: вам не нужно работать в режиме отладки. AFH 8 лет назад 0
@AFH: По крайней мере, Linux не поддерживает сценарии setuid. И даже если сценарий был настроен, его косвенный запуск через `sh -x` будет применять только привилегии` sh`, но не самого сценария. grawity 8 лет назад 0
@grawity - я только что протестировал запуск скрипта с битом `setuid` и подтвердил, что его нельзя использовать: при нормальном вызове он запускает подоболочку с привилегиями вызывающего; если вызывается с ``, это не меняет пользователя оболочки. Раньше я только догадывался, так что спасибо, что поправил меня. AFH 8 лет назад 0

0 ответов на вопрос

Похожие вопросы