Я наткнулся на эту проблему, пытаясь создать новых пользователей 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? Что мне нужно сделать, чтобы это работало?
/var/log/secure
$1$
указывает, что используется MD5 . MD5, хотя и не совсем ужасный для паролей, в наши дни довольно слабый. Это совершенно отдельный вопрос, но я настоятельно рекомендую вам перейти на более мощную хеш-функцию./etc/shadow
не зашифрованы, а хешированыОтветы:
Это работает как задумано. Если вы хотите установить пароль с помощью
useradd
команды, вы должны предоставить хешированную версию пароляuseradd
.Строка
pass
удовлетворяет критериям формата для поля хэшированного пароля/etc/shadow
, но нет фактических хэшей пароля для этой строки. В результате для всех намерений и целей эта учетная запись будет вести себя как пароль, но любой пароль, который вы пытаетесь использовать для доступа к нему, будет отклонен как неверный пароль.Смотрите
man useradd
или документацию по useradd :источник
man
useradd :Вы должны передать ему хешированный пароль.
Не открытый пароль.
источник
useradd
ожидает, что вы передадите ему хэш пароля, а не сам пароль. Вы можете использовать следующую вариацию вашей команды, чтобы предоставить ей хешированный парольuseradd
:Чтобы узнать доступные методы, используйте:
Чтобы избежать передачи пароля в командной строке, поместите пароль в файл (используя редактор, а не используя
echo
или аналогичный) и сделайте следующее:Это передаст хешированный пароль в командной строке, но не открытый текст.
mkpasswd
поставляется сexpect
пакетомисточник
passwd
чтобы сменить его на что-то другое ...