Полномочия /etc/shadow
600, что означает, что это не читаемо ни для кого кроме корня.
Однако, поскольку все пароли в нем не хранятся в открытом тексте, но как хеши (который означает, что невозможно вычислить старый пароль из хеша), почему это не может быть считано всеми?
Даже при том, что Вы не можете инвертировать хеш, можно все еще попытаться хешировать каждый возможный пароль, пока Вы не находите соответствие, и можно сделать миллионы попыток в секунду с хорошими аппаратными средствами и локальным доступом к файлу.
Если файл имел 644
полномочия, затем любой, кто вошел в Вашу систему, даже на гостевой сессии, сможет скопировать этот файл прочь Вашего компьютера (ли к карте с интерфейсом USB или удаленно через scp
) и делайте попытку офлайновой атаки перебором, не оставляя доказательства этого на Вашем компьютере.
Обратите внимание, что полномочия на Ubuntu на самом деле 640
, нет 600
:
$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1239 Jun 25 04:35 /etc/shadow
Это не имеет значения очень, хотя, с тех пор нет все еще никаких полномочий для других, и, по умолчанию, никто не находится в shadow
группа.
Первоначально, хеши были сохранены в /etc/passwd
(который является, почему это называют passwd
), поскольку назад то, когда Linux был создан, взломав хеш, даже слабые типы, используемые тогда, было практически невозможно. В конечном счете, тем не менее, вычислительная мощность, усовершенствованная, до такой степени, когда взламывая хеш, по крайней мере, относительно слабого пароля, стала выполнимой.
Изменение полномочий /etc/passwd
кому: 640
или 600
не работал бы, поскольку существует много законных причин смочь читать /etc/passwd
как обычный пользователь (преобразовывающий UIDs в имена пользователей, получая полное имя пользователя, номер телефона, и т.д.), таким образом, хеши были перемещены в /etc/shadow
, который был дан 640
полномочия. x
вместо поля хэша пароля для пользователя в /etc/passwd
используется, чтобы указать, что хеш для того пользователя хранится в /etc/shadow
вместо этого.
На самом деле/etc/shadow был создан, чтобы позволить перемещаться далеко от публично читаемый список имен пользователя и паролей.
Hang там, это будет чем-то вроде урока истории, прежде чем мы доберемся до фактического ответа. Если Вы не заботитесь об истории, просто прокрутите немного вниз.
В былые времена, подобные Unix Ose, включая Linux, обычно все сохранили пароли в/etc/passwd. Тот файл был читаемым миром, и все еще, потому что он содержит информационное разрешение, отображающееся, например, между числовыми идентификаторами пользователей и именами пользователей. Та информация очень полезна даже для обычных пользователей в совершенно законных целях, также - читаемый мир файла имел большую выгоду для удобства использования.
Даже тогда, люди поняли, что наличие паролей в простом тексте в файле в известном месте, которое любой, кто мог войти в систему, мог считать свободно, было плохой идеей. Таким образом, пароли были хешированы в некотором смысле. Это - старый механизм хеширования пароля "склепа", который почти никогда не используется в современных системах, но часто поддерживается в целях прежней версии.
Смотрят на/etc/passwd в Вашей системе. Посмотрите, что второе поле, которое говорит x
везде? Это раньше содержало хешированный пароль для рассматриваемой учетной записи.
проблема состояла в том, что люди могли загрузить/etc/passwd, или даже не загрузить его и работать над взламыванием паролей. Это не было большой проблемой, в то время как компьютеры не были особенно мощны (Clifford Stoll, в Яйцо Кукушки , дает, как я вспоминаю, время для хеширования одного пароля в системе классов IBM PC в середине 1980-х приблизительно как секунда), но это стало проблемой как увеличенной вычислительной мощностью. В какой-то момент, с достойным списком слов, взламывая те пароли стал слишком легким. Для технических причин эта схема также не могла поддерживать пароли дольше, чем восемь байтов.
Две вещи были сделаны для решения этого:
, Что файл является/etc/shadow.
программное обеспечение, которое работает с/etc/shadow, является обычно очень маленьким, высоко сфокусированное и имеет тенденцию получать некоторое дополнительное исследование в обзорах из-за потенциала для проблем. Это также работает со специальными полномочиями, который позволяет этому читать и изменять/etc/shadow, при сохранении обычных пользователей не могущими посмотреть на тот файл.
, Таким образом, там у Вас есть он: полномочия на/etc/shadow строги (хотя, как указано уже, не совсем столь строгий, как Вы заявляете), потому что целая цель того файла состоит в том, чтобы ограничить доступ к уязвимым данным.
хэш пароля А, как предполагается, силен, но если Ваш пароль будет на Лучшие 500 Паролей в Интернете списки, то любой с доступом к хешу все еще сможет найти пароль быстро. Защита хеша предотвращает то простое нападение и поднимает планку для успешного нападения от простого заглядывания до требования, чтобы одно уже или было системным администратором на хосте или прошло нападение расширения полномочий сначала. Особенно в правильно администрируемой многопользовательской системе, оба из тех значительно более трудные, чем просто рассмотрение читаемого миром файла.
, Почему разрешение для/etc/shadow файла установлено быть 600?
, Кто сказал Вам это?
$ls -l /etc/shadow
-rw-r----- 1 root shadow 1407 mei 18 10:05 /etc/shadow
Простой ответ: полномочия в Linux взяты серьезные. Нет никакой причины для "других" сделать что-либо с /etc/shadow
. И нет никакой причины для группы "тени" для записи в него. И выполнение вне порядка.
Однако, поскольку все пароли в нем не хранятся в открытом тексте, но как хеши (который означает, что невозможно вычислить старый пароль из хеша), почему это не может быть считано всеми?
, поскольку нет ни одной причины сделать так.
Хеши являются односторонними. Предоставление кому-то доступ для чтения позволяет ему использовать сценарий для злоупотребления этим односторонним: просто перечислите любое слово, можно вообразить и создать хеш. В какой-то момент это могло бы соответствовать паролю. Мог бы требовать времени хотя также.
Этот ответ интересен и имеет некоторые оценки на грубом принуждении.
Важный фон: /etc/shadow
существует только в целях хранения скрытых хэшей пароля. В Вас Первые годы Unix хэши пароля были сохранены в /etc/passwd
. Поскольку компьютеры получили более мощные, более персистентные сетевые соединения и более сложное использование безопасности, люди поняли, что хранение читаемых словом хэшей пароля напрашивалось на неприятности. (Я не детализирую использование; уже существует достаточно хороших ответов об этом.)
, Но /etc/passwd
не мог быть защищен от чтения: Это используется всеми видами программ, чтобы отобразить числовые идентификаторы пользователей на имена пользователей и искать корневые каталоги, оболочки по умолчанию, полное имя пользователя (и номер станции и т.д. - выезд man finger
). Таким образом, чувствительная часть, хэши пароля, была перемещена в /etc/shadow
, и остальные остались, как это было. Вот почему /etc/passwd
, несмотря на имя, содержит все кроме (хешированный) пароль.