Мне нужно иметь возможность создавать учетные записи пользователей в моем Linux (Fedora 10) и автоматически назначать пароль с помощью сценария bash (или иным образом, если это необходимо).
С помощью Bash легко создать пользователя, например:
[whoever@server ]# /usr/sbin/useradd newuser
Можно ли назначить пароль в Bash, что-то функционально похожее на это, но автоматически:
[whoever@server ]# passwd newuser
Changing password for user testpass.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[whoever@server ]#
expect
сценария.Ответы:
Вы можете запустить команду passwd и отправить ее по конвейеру. Итак, сделайте что-то вроде:
источник
echo
что это встроенная в используемую оболочку, как это обычно бывает), по крайней мере, в отношении/proc/
.echo -e "password\npassword\n" | passwd
13.04echo 'myuser:mypass' | chpasswd
. Надеюсь, это поможет.Вы также можете использовать chpasswd :
Итак, вы меняете пароль для пользователя
username
наnew_password
.источник
$ apropos chpasswd
...chpasswd (8) - update passwords in batch mode
busybox
, в то время какpasswd
нет (нет--stdin
выбора).Я спрашивал себя об этом и не хотел полагаться на сценарий Python.
Это строка для добавления пользователя с определенным паролем в одну строку bash:
источник
useradd -p $(openssl passwd -1 $PASS) $USER
является более современным, поскольку обратные тики устарели и$()
рекомендуется.useradd -m -p <password> -s /bin/bash <user>
-m Создает домашний каталог, -s указывает на то, что пользователи по умолчанию используют оболочку, заменуpassword
иuser
для ваших нужд.useradd -m -p $(openssl passwd -1 -salt $SALT $PASS)
. Я думаю, что это требуется на более поздних версиях Ubuntu.Код ниже работал в Ubuntu 14.04. Попробуйте, прежде чем использовать его в других версиях / вариантах Linux.
источник
--gecos
Мне понравился подход Tralemonkey,
echo thePassword | passwd theUsername --stdin
хотя он не совсем сработал для меня, как написано. Однако это сработало для меня.-e
это признать\n
как новую строку.sudo
это корневой доступ для Ubuntu.Двойные кавычки должны признать
$
и расширять переменные.Приведенная выше команда дважды передает пароль и новую строку,
passwd
чтоpasswd
требуется.Если не использовать переменные, я думаю, что это, вероятно, работает.
Здесь должно быть достаточно одинарных кавычек.
источник
Следующее работает у меня и проверено на Ubuntu 14.04. Это один вкладыш, который не требует никакого пользовательского ввода.
Взято из @Tralemonkey
источник
Вы можете использовать опцию -p.
К сожалению, для этого требуется, чтобы вы хэшировали пароль самостоятельно (где passwd сделает это за вас). К сожалению, не существует стандартной утилиты для хеширования некоторых данных, поэтому вам придется написать ее самостоятельно.
Вот небольшой скрипт на Python, который я написал для того, чтобы сделать шифрование для вас. Предполагая, что вы назвали его pcrypt, вы должны написать вышеприведенную командную строку:
Пару предупреждений, о которых нужно знать.
и вот pcrypt:
источник
Единый вкладыш для создания пользователя sudo с домашним каталогом и паролем.
источник
--stdin
не работает на Debian. Это говорит:Это сработало для меня:
Здесь мы можем найти несколько других хороших способов:
источник
Вы можете использовать ожидаемый в вашем скрипте bash.
С http://www.seanodonnell.com/code/?id=21
источник
Я знаю, что приеду в этом году спустя, но я не могу поверить, что никто не предложил usermod.
Черт, на всякий случай, если кто-то захочет сделать это на старом HPUX, который вы можете использовать
usermod.sam
.Параметр -F необходим только в том случае, если пользователь, выполняющий сценарий, является текущим пользователем. Конечно, вам не нужно использовать Perl для создания хеша. Вы можете использовать openssl или много других команд вместо него.
источник
Вот скрипт, который сделает это за вас .....
Вы можете добавить список пользователей (или только одного пользователя), если хотите, все сразу, и у каждого будет свой пароль. В качестве бонуса вы представлены в конце скрипта со списком паролей каждого пользователя. .... Если вы хотите, вы можете добавить некоторые параметры обслуживания пользователей
лайк:
к сценарию, который будет устанавливать возраст пароля и так далее.
=======
===========
Надеюсь это поможет.
Ура, Карел
источник
Я проверил в своем собственном сценарии оболочки.
$new_username
означает вновь созданного пользователя$new_password
означает новый парольДля CentOS
Для Debian / Ubuntu
Для OpenSUSE
источник
Решение Tralemonkey почти сработало и для меня ... но не совсем. В итоге я сделал это так:
2 ключевые детали, которые не были включены в его решение, не
-n
отражают добавление\n
к паролю, который шифруется, и одинарные кавычки защищают содержимое от интерпретации оболочкой (bash) в моем случае.Кстати, я выполнил эту команду от имени пользователя root в системе CentOS 5.6 на случай, если кому-то интересно.
источник
Решение, которое работает как на Debian, так и на Red Hat. Зависит от perl, использует хэши sha-512:
Использование:
Его можно эффективно использовать как однострочник, но вам нужно будет указать пароль, соль и имя пользователя в нужных местах:
источник
От IBM ( https://www.ibm.com/support/knowledgecenter/ssw_aix_61/com.ibm.aix.cmds1/chpasswd.htm ):
Создайте текстовый файл, скажем text.txt, и заполните его парами user: password следующим образом:
Сохраните файл text.txt и запустите
Вот и все. Решение является (а) масштабируемым и (б) не включает печать паролей в командной строке.
источник
источник
Для RedHat / CentOS вот код, который создает пользователя, добавляет пароли и делает пользователя sudoer:
источник
использование:
./my_add_user.sh USER PASSWD
код:
источник