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

/ і т.д. / тінь містить

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? Що мені потрібно зробити, щоб він працював?


Я не бачу запитання там? - Такими речами керують через 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 ПАРОЛЬ

Зашифрований пароль, повернений криптою (3) . За замовчуванням - відключити пароль.

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

Ви повинні переконатися, що пароль відповідає політиці щодо пароля системи.


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.