У меня есть Linux-сервер, у которого несколько десятков пользователей. У меня также есть пароль в открытом виде для каждого пользователя (я знаю - плохая безопасность).
Я хотел бы знать, верны ли пароли. Поскольку все пользователи являются пользователями ftp и имеют оболочку nologin, я не могу просто написать сценарий, чтобы проверить, работает ли вход в систему.
Как я могу проверить пароли на месте? Вывод скрипта может выглядеть так:
$ check_userpw < user_pw_list.txt
user1 ok
user2 ok
user3 mismatch!
user4 ok
Спасибо
Вы можете написать сценарий для автоматизации входа в систему FTP на каждом из них, используя Perl's Net :: FTP или GNU Expect, или что угодно, но, вероятно, самым простым способом было бы совмещать check_ftp
программа в Nagios-Plugins. В случае сбоя входа в систему он вернет ненулевое значение.
Если ваши пользователи аутентифицированы по локальным паролям, хранящимся в / etc / shadow, вы можете сгенерировать хэши и сравнить их самостоятельно.
Для хешей MD5 это поле выглядит так:
$ 1 $ 5q9TrKNO $ YeVQrfsitsGlapGwhAjIl.
(Конечная точка включена. Это хэш для строки "abc".)
$ - это разделители. 1 в первом поле идентифицирует хеш как MD5, а 5q9TrKNO - это соль, случайно сгенерированная при установке пароля, чтобы затруднить словарные атаки.
Ты можешь использовать этот модуль Perl чтобы проверить хэш вашего сохраненного пароля: используйте соль из / etc / shadow и пароль, который у вас есть, затем убедитесь, что результат соответствует последнему разделу.