На этот вопрос уже есть ответ здесь:
В настоящее время я вошел в свою систему Linux и хочу вывести свой пароль Linux и имя пользователя на свой терминал, что команды, которые мне нужно записать, и в каком файле они хранятся и как их получить?
Короче говоря: вы не можете узнать, какой у вас пароль.
Хотя он хранится в файле /etc/shadow
, он хранится в «защищенном» формате, который называется хэш . Это похоже на запеченный пирог с набором ингредиентов, нет способа вернуть муку обратно из пирога.
Как вы знаете из других ответов, вы не видите свой пароль. Позвольте мне объяснить, почему. Конструкция, в которой пароли хранятся в их обычной форме (она называется простой), не очень безопасна (не только для операционных систем), поскольку, если список таких паролей попадает в руки злоумышленника, он может войти в систему мгновенно, поскольку список имен пользователей обычно легко получить (в Linux из файла /etc/passwd
). Вот почему вместо этого используются хэш-функции. Это односторонние функции - вы можете создать хеш на основе значения, но вы не можете создать значение на основе хеша. Если злоумышленник получает список значений хеш-функции, он не может извлечь из них действительные пароли (или, по крайней мере, это сложнее), и пользователь все равно может войти в систему - когда он передает свой пароль, он преобразуется в хэш и сравнивается с сохраненным значением. ]
Время от времени вы можете услышать, что кто-то взломал какой-то сайт и получил пароли, или что какой-то список паролей где-то просочился. Если они были сохранены в виде простого текста, злоумышленник получил мгновенный доступ к некоторым учетным записям. Если они были хешированы, он должен был сначала их сломать. Это означает больше проблем для него и больше времени для реакции, такой как смена пароля на новый. Linux (и любая система, основанная на Unix) следует этому принципу, и поэтому вы не можете напечатать свой пароль любым другим способом, который хэшируется - только если у вас есть привилегии пользователя root и вы можете прочитать файл /etc/shadow
.
Чтобы напечатать ваше имя пользователя, введите whoami
.
Пароли вообще нигде не хранятся в системе. В /etc/shadow
хранятся так называемые хеши паролей.
Хэш некоторого текста создается путем выполнения так называемой односторонней функции над текстом (паролем), таким образом создавая строку для проверки. По замыслу «невозможно» ( вычислительно неосуществимо ) обратить этот процесс вспять.
Что можно сделать, это попробовать атаку «грубой силой» - хешируя много возможных паролей, пока результат не будет равен найденному хешу. Нет другого способа, вы не можете вычислить текст (= пароль), который соответствует вашему хешу.
Существует несколько алгоритмов для создания хэшей, они отличаются по сложности, длине хэша, вероятности / возможности так называемых коллизий (два разных текста имеют одинаковый хеш, который в конечном итоге должен произойти, если хеш короче исходного текста).
Типичными текущими алгоритмами являются
оба не должны использоваться в целях криптографии / безопасности больше!