Понимание файла /etc/shadow
Главное меню » Linux » Понимание файла /etc/shadow
/etc/shadow – это текстовый файл, содержащий информацию о паролях пользователей системы. Он принадлежит пользователю root и группе shadow и имеет 640 разрешений.
Формат /etc/shadow
Файл /etc/shadow содержит одну запись в каждой строке, каждая из которых представляет собой учетную запись пользователя. Вы можете просмотреть содержимое файла с помощью текстового редактора или команды, такой как cat:
Как правило, первая строка описывает пользователя root, затем системные и обычные учетные записи пользователей. Новые записи добавляются в конец файла.
Каждая строка файла /etc/shadow содержит девять полей, разделенных запятыми:
Файл /etc/shadow не стоит редактировать вручную, если вы не знаете, что вы делаете. Всегда используйте команду, которая предназначена для этой цели. Например, чтобы изменить пароль пользователя, используйте команду passwd, а для изменения информации об устаревании пароля используйте команду chage.
Пример записи
Давайте посмотрим на следующий пример:
Запись выше содержит информацию о пароле пользователя andreyex:
Вывод
Файл /etc/shadow хранит запись о паролях зашифрованы пользователями, а также других паролях связанной с ними информацию.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
🐧 Разбор файла /etc/shadow
Можете ли вы объяснить формат файла /etc/shadow, используемый в Linux или UNIX-подобных системах?
В файле /etc/shadow хранится фактический пароль в зашифрованном формате (больше похожий на хэш пароля) для учетной записи пользователя с дополнительными свойствами, связанными с паролем пользователя.
По сути, он хранит безопасную информацию об учетной записи пользователя.
Все поля разделены двоеточием (:).
Он содержит по одной записи в каждой строке для каждого пользователя, указанного в файле /etc/passwd.
Обычно запись этого файла выглядит следующим образом:
1.Имя пользователя: это ваше имя для входа в систему.
2. Пароль: это ваш зашифрованный пароль. Пароль должен состоять минимум из 8–12 символов, включая специальные символы, цифры, буквы нижнего регистра и т. д.
3. Последнее изменение пароля (последнее изменение): дни с 1 января 1970 г., когда последний раз меняли пароль.
4. Минимум: минимальное количество дней, необходимое для смены пароля, то есть количество дней, оставшихся до того, как пользователю будет разрешено изменить свой пароль.
5. Максимум: максимальное количество дней, в течение которых пароль действителен (после того, как этот пользователь будет вынужден изменить свой пароль)
6. Предупреждение: количество дней до истечения срока действия пароля, в течение которого пользователя предупреждают о необходимости изменения пароля.
7. Неактивность: количество дней после истечения срока действия пароля, в течение которого учетная запись отключена.
8. Срок действия: дни с 1 января 1970 года, когда эта учетная запись отключена, то есть абсолютная дата, указывающая, когда логин больше не может использоваться.
Как изменить пароль?
Используйте следующий синтаксис, чтобы изменить собственный пароль:
Фундаментальные основы Linux. Часть VII. Управление локальными учетными записями пользователей
Глава 27. Пароли пользователей
Данная глава содержит дополнительную информацию о паролях локальных пользователей.
Кроме того, в данной главе обсуждаются параметры паролей и методики отключения, аннулирования или блокировки учетных записей пользователей.
Утилита passwd
Файл shadow
Файл /etc/shadow содержит таблицу с девятью разделенными двоеточиями столбцами. Эти девять столбцов (слева направо) содержат имя пользователя, зашифрованный пароль, время последнего изменения пароля (первый день соответствует 1 января 1970 года), количество дней, в течение которых пароль должен оставаться неизменным, день истечения срока действия пароля, количество дней перед истечением срока действия пароля, в течение которых должно выводиться предупреждение, количество дней после истечения срока действия пароля, по прошествии которых учетная запись должна быть отключена, а также день, когда учетная запись была отключена (также с начала 1970 года). Последнее поле пока не имеет значения.
Шифрование ключевых фраз с помощью утилиты passwd
Шифрование ключевых фраз с помощью утилиты openssl
Помните о том, что после выполнения данной команды ваш пароль в открытом виде будет сохранен в файле истории команд командной оболочки!
Шифрование ключевых фраз с помощью функции crypt
Файл /etc/login.defs
Утилита chage
Блокировка учетных записей
Пароли из файла /etc/shadow не могут начинаться с символа восклицательного знака. Если второе поле в строке из файла /etc/passwd начинается с символа восклицательного знака, пароль не может использоваться.
Редактирование локальных файлов
Практическое задание: пароли пользователей
5. Попытайтесь изменить пароль serena на пароль serena as serena.
6. Сделайте так, чтобы пользователь serena был обязан изменять пароль через каждые 10 дней.
7. Сделайте так, чтобы каждый новый пользователь был обязан изменять свой пароль через каждые 10 дней.
11. Какой параметр утилиты useradd позволяет установить имя домашней директории пользователя?
Корректная процедура выполнения практического задания: пароли пользователей
5. Попытайтесь изменить пароль serena на пароль serena as serena.
6. Сделайте так, чтобы пользователь serena был обязан изменять пароль через каждые 10 дней.
7. Сделайте так, чтобы каждый новый пользователь был обязан изменять свой пароль через каждые 10 дней.
Утилита vipw выведет предупреждение в том случае, если кто-либо еще в данный момент редактирует данный файл (с помощью утилиты vipw ).
11. Какой параметр утилиты useradd позволяет установить имя домашней директории пользователя?
Защита с помощью пароля в Linux: файл /etc/shadow
Защита с помощью пароля на Linux
Использование файла /etc/shadow
Пароль в Linux системах, используемый для учётных записей, обычно доступен как /etc/passwd. Для дополнительных мер безопасности используется теневая (shadow) копия этого файла, которая включает пароли ваших пользователей. А на самом деле, хранится даже хеш пароля, для максимальной безопасности.
Пример строки в /etc/shadow может выглядеть вроде этого:
Для нормального отображения давайте разделим эту строку на несколько полей:
Объяснение полей
Время взглянуть, что эти строки означают:
1) Имя пользователя
Это простое поле, оно содержит имя пользователя конкретного аккаунта.
2) Детали хэширования паролей + хешированный пароль
Самая важная строка в файле /etc/shadow, конечно, это второе поле. Оно включает детали о пароле и содержит несколько частей:
$6 = SHA-512
Длинная строка символов = хешированный пароль
Длины:
Обратите внимание:
3) Последнее изменение
Номер показывает, когда пароль был изменён последний раз.
Этот номер показывает, когда пароль был изменён последний раз. Номер отображает номер дня, отсчитанного с начала эпохи (1 января 1970). Прямо сейчас это промежуток 16000+.
4) Число дней до смены пароля
Это поле определяет, сколько должно пройти, пока пароль может быть сменён. В нашем случае это ноль, т. е. пароль можно поменять прямо сейчас.
5) Число дней до требуемой смены пароля
Другое поле, название которого само объясняет его функцию, отображает как долго осталось (в днях) до требования сменить пароль. Отличная опция для принудительной смены пароля.
6) Порог предупреждения в днях
В паре с предыдущем полем, это поле описывает, за сколько дней до требуемой смены пароля будут даваться предупреждения. В этом примере это одна неделя.
7) Дата истечения
Также хранится в днях, описывает, когда учётная запись истекает (с даты начала эпохи).
8) Зарезервированное поле
Обычно не используется дистрибутивами Linux.
Разрешения на файл
Владельцем файла /etc/shadow должен быть пользователь root, обычно групповым владельцем является shadow. Этот файл не должен быть читаемым кем угодно, следовательно, подходящим режимом прав на этот файл является 640.
Проверка согласованности /etc/passwd и /etc/shadow
[Пост] Управление доступом в Linux
Jan 10, 2018 • zinvapel
Основные правила управления доступом
Объекты (например, файлы и процессы) имеют владельцев. Владельцы обладают обширным (но необязательно неограниченным) контролем над своими объектами.
Основное
Под каждого пользователя, создается свой каталог, пользователю назначается командная оболочка (командный интерпретатор, используемый в операционных системах семейства UNIX). Например: /bin/bash, /bin/zsh, /bin/sh и другие.
Каждому пользователю назначается идентификационный номер (User ID). Сокращенно номер обозначается как UID, является уникальным идентификатором пользователя. Операционная система отслеживает пользователя именно по UID, а не по их имени.
Также, каждому пользователю назначается пароль для входа в систему.
Каждый пользователь принадлежит минимум к одной или нескольким группам.
Помимо пользователей, существуют группы. Так же как и пользователь, группа обладает правам доступа к тем или иным каталогам, файлам, периферии. Для каждого файла определён не только пользователь, но и группа. Группы группируют пользователей для предоставления одинаковых полномочий на какие-либо действия.
Каждой группе назначается идентификационный номер (group ID). Сокращённо GID, является уникальный идентификатором группы. Принадлежность пользователя к группе устанавливается администратором.
Управление пользователями
Просмотр
Каждый аккаунт занимает одну строку, в формате account:password:UID:GID:GECOS:directory:shell
Получение информации о пользователях
Добавление пользователя
Добавление пользователя осуществляется при помощи команды useradd.
sudo useradd vasyapupkin
Изменение пользователя
Изменение параметров пользователя происходит с помощью утилиты usermod. Пример использования:
Изменить пароль пользователю можно при помощи утилиты passwd.
sudo passwd vasyapupkin
Утилита passwd может использоваться и обычным пользователем для смены пароля.
Основные ключи passwd:
Установка пустого пароля пользователя
Супер пользователь с помощью утилит командной строки passwd и usermod или путем редактирования файла /etc/shadow может удалить пароль пользователь, дав возможность входить в систему без указания пароля.
После этого имеет смысл принудить пользователя установить себе новый пароль при следующем входе в систему.
Удаление пользователя
Для того, чтобы удалить пользователя воспользуйтесь утилитой userdel.
sudo userdel vasyapupkin
Управление группами
Создание группы
Программа groupadd создаёт новую группу согласно указанным значениям командной строки и системным значениям по умолчанию.
sudo groupadd testgroup
Изменение группы
Сменить название группы, ее GID или пароль можно при помощи groupmod.
Удаление группы
Утилита groupdel не имеет никаких дополнительных параметров.
sudo groupdel testgroup
Управление пользователями группы
Для управления пользователями группы используется утилита gpasswd. Чтобы занести пользователя в группу:
Вывод пользователя из группы:
Файлы конфигурации
/etc/passwd
В файле /etc/passwd, который упоминался ранее, хранится вся информация о пользователях кроме пароля. Одна строка из этого файла соответствует описанию одного пользователя. Примерное содержание строки таково:
Строка состоит из нескольких полей, каждое из которых отделено от другого двоеточием. Значение каждого поля:
Второе и последнее поля необязательные и могут не иметь значения.
/etc/group
В /etc/group, как очевидно из названия хранится информация о группах. Она записана в аналогичном /etc/passwd виде:
Строка состоит из нескольких полей, каждое из которых отделено от другого двоеточием. Значение каждого поля:
В этом файле второе и четвертое поля могут быть пустыми.
/etc/shadow
Файл /etc/shadow хранит в себе пароли, по этому права, установленные на этот файл, не дают считать его простому пользователю. Пример одной из записей из этого файла:
Sudo и su
Программа su служит для выполнения от имени указанного пользователя (по умолчанию — root) указанной команды/программы (по умолчанию — той программы, что определена в качестве оболочки (shell) для указанного пользователя) и запрашивает она пароль указанного пользователя.
О программе sudo можно сказать почти то же самое, за двумя исключениями:
Управление доступом
Собственно inode является, как идентификатором файла/каталога, так и сущностью, которая содержит в себе информацию о файле/каталоге. Например такую, как: принадлежность к владельцу/группе, тип файла и права доступа к файлу.
Для каждого объекта файловой системы в модели полномочий Linux есть три типа полномочий:
В полномочия записи входят также возможности удаления и изменения объекта. Право выполнения можно установить для любого файла. Потенциально, любой файл в системе можно запустить на выполнение, как программу в Windows. В Linux является ли файл исполняемым или нет, определяется не по его расширению, а по правам доступа. Кроме того, эти полномочия указываются отдельно для владельца файла, членов группы файла и для всех остальных.
Кроме указанного представления полномочий доступа (символьного), существует так же и числовое представление. Для общего понимания, приведу таблицу соответствия числового (двоичного и десятичного) значения прав доступа и буквенного:
| владелец | группа | остальные | |
|---|---|---|---|
| буквенное | rwx | r-x | r– |
| двоичное | 111 | 101 | 100 |
| двоичное в десятичных | 421 | 401 | 400 |
| десятичное | 7 | 5 | 4 |
Управление правами доступа
Управление правами доступа происходит с помощью команды chmod, управление владельцем файла происходит с помощью команды chown. Синтаксис команд следующий:
Использование команды chown выглядит следующим образом: chown user:group file (-R рекурсивно)
Права доступа к символьным ссылкам
Если посмотреть на права символьных ссылок, то они всегда выглядят так: rwxrwxrwx. Дело в том, что права на символьную ссылку не имеют особого значения. При использования ссылки драйвер файловой системы пересчитывает реальный путь к файлу и применяет права доступа, определенные для реального пути уже без учета символьной ссылки.
Специальные атрибуты
Хотелось бы так же провести аналогию с ОС Windows. В указанной операционной системе права регулируются на основе списков ACL. В Linux тоже такое возможно, это реализуется с помощью пакета acl, но данный вопрос в текущей теме я рассматривать не буду. Еще одно важное замечание! В Windows можно определить права доступа на каталог, и они автоматически распространяются на все файлы и поддиректории (если вы явно не указали иного). В Linux права доступа сохраняются в inode файла, и поскольку inode у каждого файла свой собственный, права доступа у каждого файла свои. Так же, права доступа пользователя и группы не суммируются, как в Windows. Если программа выполняется с правами пользователя и группы, которым принадлежит файл — работают только права хозяина файла.
Исполняемый файл с установленным атрибутом suid является “потенциально опасным”. Без установленного атрибута, файл не позволит обычному пользователю сделать то, что выходит за пределы прав пользователя (пример, программа passwd позволяет пользователю изменить только собственный пароль). Но, даже незначительная ошибка в такой программе может привести к тому, что злоумышленник сможет заставить её выполнить ещё какие-нибудь действия, не предусмотренные автором программы. Стоит очень осторожно относиться к данным атрибутам! Как найти в системе файлы с атрибутом SIUD и др.
При создании новой директории в директории с уже установленным SGID-битом, у созданной директории SGID-бит устанавливается автоматически!
Обозначение атрибутов Sticky, SUID, SGID
Права доступа по-умолчанию для вновь создаваемых объектов файловой системе.
В Linux, при создании какого-либо файла или каталога предоставляемые права определяются по определенному алгоритму (формуле). Не вдаваясь в подробности и для большего понимания сути скажу, что есть исходные права доступа:
Узнать текущий umask можно, введя команду umask без параметров. Пример:








