
Я хочу создать нового пользователя в определенной группе, выполнив следующую команду.
sudo ./create_user.sh "test" "firstname lastname"
Скрипт create_user.sh
выглядит следующим образом.
#!bin/bash
#sudo adduser --gecos "$2" --ingroup testgroup $1
Однако проблема в том, что мне нужно избежать вставки пароля (это должен быть просто тест) с помощью документа here, но я понятия не имею о синтаксисе.
Я попробовал несколько решений, но ни одно из них не сработало.
Вот как выглядит моя попытка сделать heredocument в скрипте
#<< EOF
#test
#test
#EOF
мой вывод выглядит так
#adding user 'test' ...
#adding new user 'test' <1003> with group 'testgroup' ...
#Enter new UNIX password:
решение1
adduser
вызывает passwd
утилиту для установки пароля. Как и многие программы, запрашивающие пароль, passwd
настаивает на том, чтобы ее вывод поступал с терминала. Поэтому вы не можете передать ему ввод через here-document — который создает временный файл или канал и passwd
не принимает ни то, ни другое.
Вы можете передать adduser
(по крайней мере, в версии Debian) эту --disabled-password
опцию, если не хотите иметь возможность входить в систему с помощью пароля (вы все равно сможете входить в систему другими способами, такими как ключи SSH, если вы их настроите). adduser
не имеет возможности передавать хэш пароля (не сам пароль), но useradd
в наборе утилит теневого пароля Linux она есть.
Если вы хотите ввести пароль во время создания учетной записи, убедитесь, что passwd
считывает с терминала. Если вы получаете пароль из другого источника (например, веб-формы), вызовите passwd
изожидатьсценарий — пример.
Если это упражнение в использовании документа here, то пароль не там, где его следует использовать. Я не вижу никаких проблем, которые документ here мог бы решить в том, что вы опубликовали.