1

Я понимаю разницу между shadow и passwd, но мой вопрос: почему у них есть оба? Это кажется ненужным осложнением. Почему бы просто не сохранить зашифрованный пароль в файле passwd? Разве их безопаснее разделять? Я заметил, что passwd доступен для всех, но тень только для суперпользователей.

4 ответа4

4

Это вопрос безопасности. Файл /etc/passwd используется различными инструментами, и поэтому он должен быть общедоступным. Например, ls сопоставляет идентификатор пользователя с именем пользователя для отображения информации о владельцах файлов в удобочитаемой форме.

Вместо этого /etc/shadow доступен для чтения только пользователю root. Хотя маловероятно, что пароль можно восстановить из хэша, хранящегося в файле, все же рекомендуется защитить его от посторонних глаз; кроме того, другие поля являются чувствительными и поэтому считаются нуждающимися в дополнительной защите: учтите, что файл также хранит:

Последняя смена пароля: в этом поле указывается количество дней, начиная с времени UNIX (1 января 1970 года), когда произошла последняя смена пароля.

Минимальное количество дней между сменами пароля: в этом поле указывается минимальное количество дней, после которых пользователь может изменить свой пароль.

Срок действия пароля: в этом поле указано максимальное количество дней, в течение которых пароль действителен. После этого срок действия пароля истечет, и пользователю придется сменить пароль.

Порог предупреждения: в этом поле указывается количество дней, за которые пользователь получит предупреждение об истечении срока действия пароля.

Учетная запись неактивна: в этом поле указывается количество дней, по истечении которых учетная запись будет отключена после истечения срока действия пароля.

Время с момента отключения учетной записи: в этом поле указывается количество дней, начиная с времени UNIX, с которого учетная запись отключена.

Вся эта информация была бы полезна злоумышленнику, если бы она была им доступна.

4

Основная цель - защитить хеши паролей пользователей. Файл /etc/passwd содержит различную информацию о пользователе, которая должна быть доступна для чтения всем. Файл /etc/shadow может быть прочитан только пользователем root . Это простое разделение прав доступа не позволяет случайным пользователям и «деткам сценариев» видеть список хэшей паролей пользователей и, возможно, взламывать их. Помните, что хэши не шифруются никоим образом и поэтому являются более слабыми.

В какой-то момент shadow файл не существовал, и пользовательские хеши были сохранены в passed файле, как объяснено в Википедии:

В 1987 году автор оригинального пакета Shadow Password Suite, Джули Хоу, испытала взлом компьютера и написала первый выпуск Shadow Suite, содержащий команды login , passwd и su . Оригинальная версия, написанная для операционной системы SCO Xenix, быстро была перенесена на другие платформы. Shadow Suite был перенесен на Linux в 1992 году, через год после первоначального объявления о проекте Linux, и был включен во многие ранние дистрибутивы и продолжает включаться во многие текущие дистрибутивы Linux.

Я помню это, потому что общедоступная система Unix, в которой я работал в начале 1990-х годов, объявила о переходе на новую настройку, где будет использоваться /etc/shadow , и были некоторые дискуссии о том, была ли это хорошая идея или нет.

Больше истории о Джули Хо и о создании Shadow Password Suite можно найти здесь:

В 1987 году я стал жертвой компьютерного хакера и внезапно обнаружил необходимость узнать все возможное о компьютерной безопасности. Я начал с изучения общих приемов, которые хакеры использовали для взлома систем, и закончил тем, что написал Shadow Password Suite. Теперь это стандартная подсистема повышенной безопасности defacto для бесплатных систем UNIX, и, вероятно, она используется более чем на 100 000 систем по всему миру. Я даже написал и представил доклад на конференции USENIX об этом. Если вы заинтересованы в использовании Shadow Password Suite в собственной системе, вы можете получить копию здесь. Я написал и представил доклады или обсуждения на нескольких конференциях и с нетерпением жду возможности встретиться с некоторыми из вас на конференции по безопасности в будущем.

1

У файла passwd действительно есть поле "пароль", оставшееся с ранних дней, но его все еще можно использовать - например, в Linux есть команды pwconv и pwunconv для объединения / разделения двух файлов. (Хотя это может привести к потере дополнительной информации, которая также хранится в shadow файле, например времени истечения срока действия учетной записи.)

Я не совсем уверен в сроках; однако, AFAIK, изначально shadow файл был создан, потому что пароли вообще не хэшировались - поэтому пароли в виде открытого текста должны были быть защищены от чтения простыми смертными. (В то время ограничения экспорта означали, что во многих системах Unix не были установлены функции DES .) Хеширование паролей стало широко распространено гораздо позже.

(Пароли хешируются, а не шифруются; поскольку прямого способа «не хэшировать» что-либо нет, система проверяет пароль, точно хешируя его, и сравнивая оба хэша.)

Но даже с хешированными паролями дополнительный уровень защиты остается важным. Не все хеш-функции достаточно сильны для защиты короткого пароля - например, та же самая оригинальная хэш-функция crypt() на основе DES была сильной в то время, но в наши дни считается крайне слабой. (Некоторые системы все еще используют это!)

Linux crypt() теперь поддерживает более широкий спектр хеш-функций, таких как $1$ на основе SHA-1 или $5$ на основе SHA-256, но добавленные средства защиты (соль, многократные раунды) все еще не так хороши, как последние разработки PBKDF2 или bcrypt, а также хэши многих коротких паролей все еще могут быть взломаны за короткое время.

Точно так же Windows до сегодняшнего дня использует очень слабую хеш-функцию (всего один раунд MD4, без соли или каких-либо других функций безопасности). Он не может быть легко обновлен, так как старые протоколы сетевой аутентификации Windows полагаются на него, поэтому база данных должна быть надежно защищена даже от администраторов (чтобы предотвратить ее получение вредоносным ПО).

1

Это очень простое объяснение. В файле passwd содержится много ценной информации, где shadow файл содержит encrypted пароль.

** файл **passwd** содержит неверную информацию

  1. Имя пользователя
  2. Пароль (символ х)
  3. ИД пользователя (UID)
  4. GroupID (ГИД)
  5. Информация о пользователе
  6. Домашний каталог
  7. Оболочка пользователя Где все атрибуты в shadow файле содержат информацию о пароле пользователя, **shadow** файл содержит следующую информацию:
  8. Имя пользователя
  9. Пароль (зашифрованный)
  10. Последняя смена пароля
  11. Минимальное количество дней для смены пароля пользователем
  12. Максимальное количество дней для смены пароля пользователем
  13. Предупреждать (дни, когда начинается предупреждение о смене пароля)
  14. Неактивный Количество дней после истечения срока действия пароля, когда учетная запись отключена
  15. Истекает абсолютная дата, указывающая, когда логин больше не может использоваться

Еще одно отличие заключается в том, что файл passwd для чтения всем пользователям, где в случае shadow может только root.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .