Пароль не работает с useradd -p
Я бегу Ubuntu 14.04 LTS. Я выполнил следующую команду, чтобы создать пользователя
$sudo useradd -m -p password1 guest_user
а затем попытался переключиться на пользователя с
$su guest_user
Но я не мог войти с паролем1
Я что-то пропустил? Я полагаю, чтобы войти с паролем1 или что-то еще, как опция -p говорит на странице man для useradd
-p, --password PASSWORD
The encrypted password, as returned by crypt(3). The default is to disable the password.
Note: This option is not recommended because the password (or encrypted password) will be
visible by users listing the processes.
You should make sure the password respects the system's password policy.
Вышесказанное смущает меня, потому что, когда я набираю команду
useradd -m -p пароль1
пароль password1 виден в командной строке. Как сделать его невидимым в приведенной выше команде?
5 ответов
От man useradd
:
-p, --password PASSWORD
The encrypted password, as returned by crypt(3). The default is to disable the password.
Как вы можете видеть PASSWORD
с -p
опция - зашифрованный пароль, возвращаемый crypt(3)
библиотечная функция.
Если вы используете -p password1
система будет считать этот простой текст password1
как зашифрованный ввод теневого пароля в /etc/shadow
,
Решение состоит в том, чтобы использовать зашифрованный пароль здесь с -p
что небезопасно, вы должны установить пароль в интерактивном режиме.
Например, сначала создайте suer:
sudo useradd -m -s /bin/bash guest_user
Теперь установите пароль:
sudo passwd guest_user
Или лучше использовать adduser
вместо:
sudo adduser --gecos '' guest_user
Ты можешь использовать
perl
распечатать зашифрованный пароль и использовать его с
-p
вариант в
useradd
команда.
$ sudo useradd -m -p $(perl -e 'print crypt($ARGV[0], "password")' 'YOUR_PASSWORD') username
Вы также можете использовать его с другими опциями, такими как
-s
для Shell или
-d
для домашнего каталога.
Попробуйте добавить аргумент после каждой опции, которую вы хотите использовать. Например:
useradd -m guest_user -p passwd1
Как подсказывает man-страница useradd, добавление вашего пароля таким способом не считается безопасным, поскольку оно передается в виде простого текста. Для альтернативы попробуйте:
sudo useradd -m guest_user
а потом:
sudo passwd guest_user
Два предостережения:
строка, начинающаяся с: NAME_REGEX= in: /etc/adduser.conf, может запретить использование символа подчеркивания "_" для имен пользователей;
могут быть требования к сложности пароля, установленные в: /etc/pam.d/common-password, которые требуют более сложного пароля.
Альтернативой тому, что вы хотите, является:
$ sudo su
# useradd -m USER && echo "USER:PASSWORD" | chpasswd
Вы можете использовать следующую функцию:
myAddUser() {
# check for this in '/etc/passwd' and '/etc/shadow'
# $1 is the username
# $2 is the password
sudo useradd -s /bin/bash -m -p $(perl -e 'print crypt($ARGV[0], "password")' "$2") "$1"
}
Как это:
myAddUser mostafa 1557 "This is the only user"
Вы также можете получить функцию и использовать ее по своему усмотрению!
Это модификация ответа Chhaileng .