Пароль не работает с 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 .

Другие вопросы по тегам