useradd
имеет -p
флаг, с помощью которого можно указать шифротекст пароля, зашифрованный с помощью crypt. Но более поздние версии Linux не имеют крипты.
Как я могу одной строкой создать нового пользователя в RedHat с заранее заданным паролем?
Обновите, чтобы предотвратить дальнейшее отрицательное голосование без контекста или участия: мои сценарии используются в среде автоматической настройки в Amazon Web Services. Сценарий загружает и устанавливает необходимые программные компоненты вместе с основным бизнес-приложением, настраивает его, добавляет для него файлы конфигурации и т. Д. Одна из других вещей, которые необходимо сделать этому приложению, - это создать службу SFTP для передачи некоторых файлов бухгалтерской книги назад и вперед ( эта служба не находится под моим контролем, поэтому я не могу выполнить это требование с помощью аутентификации с открытым ключом). Одним из шагов в автоматической настройке является создание пользователя, с которым будет входить внешняя система для выполнения SFTP-ввода, но команда useradd по умолчанию в RedHat создает заблокированного пользователя без пароля, тогда вы интерактивно установить пароль с помощью passwd. Это не вариант в автоматическом скрипте. Флаг -p существует, но он ожидает, что зашифрованный текст зашифрован с помощью crypt, который сам использует (я думаю) любой криптографический алгоритм, который использует теневой файл, но похоже, что эта утилита не существовала в более поздних Linux и Linux-подобных операционных системах для пока. Единственный способ обойти это - зашифровать пароль в другой, более старой системе и использовать зашифрованный текст в сценарии? Похоже, что для получения любых паролей в скрипте с использованием расшифровки KMS требуется много усилий, поэтому в скрипте нет секретов в открытом виде.
Это решение должно помочь:
sudo useradd -p $(openssl passwd -1 password) username
Эта команда создает пользователя с именем пользователя «имя пользователя» и паролем «пароль».
Альтернатива:
useradd test echo "username:password" | chpasswd
Проверено на: Ubuntu 16.04 / Debian 9
Для RedHat (7.3 Maipo для этой версии) работает следующее не особо изящное решение:
useradd your-service-user; echo s3cr3tP4ssW0rd! | passwd your-service-user --stdin
Используется стандартный ввод для подачи passwd
добавить пароль.