Intereting Posts
Что делает «while test $ # -gt 0»? mysqld останавливается сразу после запуска из-за поврежденных таблиц (полный диск + перезагрузка оборудования) – как его исправить? Как отключить соединение wifi, связанное с wpa_supplicant Как щелкнуть правой кнопкой мыши на компьютере с одной кнопкой? Визуализатор файла журнала в терминале (UNIX) (повтор записи в журнале) Получить максимальные и минимальные значения длины и данные столбцов? Получите дополнение к результату команды ls Проверка вывода команды, не совсем работающей с помощью скрипта BASH Правильное завершение работы компьютера с X сеанса Как запустить последнюю версию программы? извлечение смолы также автоматически распаковывается LAN9500A Проблема с USB-драйвером USB USB! Почему мои логины пропустили tty? Конкатенация столбцов при совпадении других полей Какие зрители могут воспроизводить gif-анимированные изображения?

пароль мультиплатформенного изменения

Мы пытаемся стандартизировать passwd для изменения наших паролей * nix. На linux это просто:

 printf "secret\nsecret\n" | passwd username 

Но FreeBSD переписала свою версию passwd для использования библиотеки pam . Система pam использует openpam_ttyconv для чтения пароля, который перескакивает через некоторые обручи, чтобы победить попытки администратора перенаправить stdin.

Если вы попробуете вышеупомянутый рецепт на FreeBSD, он все равно будет запрашивать tty и ждать интерактивного ответа. Если вы попытаетесь pam_chauthtok: conversation failure и перенаправить перенаправление stdin, вы получите pam_chauthtok: conversation failure

Я понимаю, что на FreeBSD мы можем использовать

 printf "secret\nsecret\n | pw usermod -n username -h0 

Но я надеялся (возможно, мечтать), что кто-то может знать трюк, чтобы заставить библиотеку pam принять перенаправление stdin?

Стандартный ответ на проблемы, связанные с интерактивным вводом паролей, заключается в том, что в этом случае следует использовать команду – passwd.

Вы можете использовать chpass для изменения пароля из скрипта на * BSD и аналогичной утилиты chpasswd в Linux. Оба позволяют вам установить «зашифрованный» пароль для учетной записи – фактически хэш пароля . Вы можете вызвать функцию crypt из скрипта Perl или Python для вычисления хэша (не забудьте выбрать хэш-функцию, случайную соль и хорошее количество итераций).