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

20

Я наткнулся на эту проблему, пытаясь создать новых пользователей 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:::

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

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

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

/ var / log / secure содержит:

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на useradd? Что мне нужно сделать, чтобы это работало?

BadToTheBone
источник
Я не вижу вопроса там? - Такие вещи управляются через PAM и обычно /var/log/secure
входят
@HBruijn Я обновил свой ответ, чтобы показать, что записано в / var / log / secure
BadToTheBone
2
В самом деле? +12 за вопрос, на который явно отвечает соответствующая страница руководства?
CVN
Обратите внимание, что в хэше пароля $1$указывает, что используется MD5 . MD5, хотя и не совсем ужасный для паролей, в наши дни довольно слабый. Это совершенно отдельный вопрос, но я настоятельно рекомендую вам перейти на более мощную хеш-функцию.
CVN
2
Примечание: пароли /etc/shadowне зашифрованы, а хешированы
Тобиас Кинцлер,

Ответы:

43

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

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

Смотрите man useraddили документацию по useradd :

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

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

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

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

kasperd
источник
32

manuseradd :

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

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

обманщик
источник
16

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пакетом

Приостановлено до дальнейшего уведомления.
источник
2
Не используйте MD5! Используйте SHA-2
Йозеф
9
Есть ли к сведению , что это временно обнажает пароль с помощью различных интерфейсов ядра (любой процесс можно читать командную строку любого другого процесса) и может привести к его сохраняются в виде обычного текста на диск через $ ИСТОРИЮ или аналогичные механизмы.
CVN
@ MichaelKjörling: очень хороший момент. Пожалуйста, смотрите мой отредактированный ответ.
Приостановлено до дальнейшего уведомления.
1
Конечно, вы все еще храните простой текстовый пароль на диске. По крайней мере, это дает сисадмину выбор. Может быть, в этот момент нам лучше сначала использовать фиктивный пароль и немедленно запустить его, passwdчтобы сменить его на что-то другое ...
CVn
2
Абсолютно Деннис, это намного лучше, но пароль все равно остается на диске в виде простого текста. В некоторых ситуациях и при определенных моделях угроз это может быть реальной проблемой. Это не должно быть.
CVN