Назад | Перейти на главную страницу

Как мне создать пользователя с паролем в одной строке в Bash, на Redhat?

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 добавить пароль.