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

useradd не шифрует пароли в / etc / shadow

Я наткнулся на эту проблему при попытке создать новых пользователей FTP для vsftpd. После создания нового пользователя с помощью следующей команды и попытки входа в систему с помощью FileZilla я получал ошибку «неправильный пароль».

useradd f -p pass -d /home/f -s /bin/false

После этого / etc / shadow содержит

f:pass:1111:0:99:2:::

Как только я запустил следующую команду и предоставил тот же проход проходить

passwd f

/ etc / shadow содержит

f:$1$U1c5vVwg$x5TVDDDmhi0a7RWFer6Jn1:1111:0:99:2:::

Похоже, что шифрование происходит, когда я запускаю пароль, но не на useradd

Важно отметить, что после этого я могу войти на FTP с теми же учетными данными.

Я использую CentOS 5.11, vsftpd для FTP и FileZilla для FTP-доступа.

/ var / журнал / безопасный содержит:

Dec 17 useradd[644]: new group: name=f, GID=511
Dec 17 useradd[644]: new user: name=f, UID=511, GID=511, home=/home/f, shell=/bin/false

Почему не работает, когда я прохожу -p pass использоватьradd? Что мне нужно сделать, чтобы он заработал?

Это работает как задумано. Если вы хотите установить пароль с помощью useradd , вы должны указать хешированный вариант пароля для useradd.

Строка pass удовлетворяет критериям формата для поля хешированного пароля в /etc/shadow, но никаких фактических хешей паролей для этой строки. В результате для всех намерений и целей эта учетная запись будет вести себя как имеющая пароль, но любой пароль, который вы попытаетесь использовать для доступа к ней, будет отклонен как неправильный.

Видеть man useradd или документация useradd:

-p, --password ПАРОЛЬ

Зашифрованный пароль, возвращенный склеп (3). По умолчанию пароль отключен.

Примечание. Этот вариант не рекомендуется, поскольку пароль (или зашифрованный пароль) будет виден пользователям, перечисляющим процессы.

Вы должны убедиться, что пароль соответствует политике паролей системы.

manuseradd:

   -p, --password PASSWORD
       The encrypted password, as returned by crypt(3). The default is to
       disable the password.

Вы должны передать ему хешированный пароль.
Не простой текстовый пароль.

useradd ожидает, что вы передадите ему хэш пароля, а не сам пароль. Вы можете использовать следующий вариант своей команды, чтобы предоставить хешированный пароль для useradd команда:

useradd f -p "$(mkpasswd --method=sha-512 'pass')" -d /home/f -s /bin/false

Чтобы узнать доступные методы, используйте:

mkpasswd --method=help

Чтобы избежать передачи пароля в командной строке, поместите пароль в файл (используя редактор, а не echo или аналогичный) и сделайте следующее:

useradd f -p "$(mkpasswd --method=sha-512 --password-fd=0 < filename)" -d /home/f -s /bin/false

В командной строке будет передан хешированный пароль, но не открытый текст.

mkpasswd идет с expect пакет.