Я наткнулся на эту проблему при попытке создать новых пользователей 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). По умолчанию пароль отключен.
Примечание. Этот вариант не рекомендуется, поскольку пароль (или зашифрованный пароль) будет виден пользователям, перечисляющим процессы.
Вы должны убедиться, что пароль соответствует политике паролей системы.
man
useradd:
-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
пакет.