Файлы в операционках семейства Linux можно назвать основой всего. Для Linux все есть файл. Другими словами, файлы это не только объекты для хранения информации, но и устройства, тоннели, сокеты и многое другое. При этом, нам необходимы разграничивать доступ к тем или иным файлам в зависимости от прав пользователя, обращающегося к файлу. У каждого файла в Linux системах есть владелец (user). И как мы уже говорили, у каждого  пользователя есть уникальный идентификатор – user ID. Еще есть группы, то есть объединения пользователей по тому или иному признаку.  Каждый пользователь должен состоять минимум в одной группе, но есть возможность добавить пользователя во множество групп. Так же, как и у пользователя, группа имеет уникальный идентификатор группы называемый GID – group ID. Информацию об учетных записях ОС Linux хранит в файле /etc /passwd.Он содержит следующее: Где:User ID - логин;Password – наличие пароля;UID - идентификатор пользователя;GID - идентификатор группы по умолчанию;User Info – вспомогательная информация о пользователе (полное имя, контакты и т.д.)Home Dir - начальный (он же домашний) каталог;Shell - регистрационная оболочка, или shell. Когда-то, на заре становления Линукс, в файле /etc/passwd хранились также хэши паролей от учетных записей пользователей. Но тогда эти данные становились легкой добычей злоумышленников, так как любой пользователь мог прочитать этот файл и скопировать хэши для последующей расшифровки. В качестве проверки можно под учеткой обычного пользователя (не root) ввести cat /etc/passwd и вы получите содержимое файла. Для хранения хэшей паролей в современных Линукс используется файл /etc/shadow. И вот к содержимому этого файла обычные пользователи уже доступа не имеют. Таким образом, обеспечивается защита хэшей от пользовательского доступа. Файл /etc/shadow имеет следующую структуру: loginID:password:lastchg:min:max:warn:inactive:expire где: loginID – имя пользователя;password – пароль в зашифрованном виде;lastchg – количество дней c 1.01.1970, когда пароль был изменен в последний раз;min – минимальное число дней между сменами пароля;max – максимальное число дней, в течении которых пароль будет валиден;warn – количество дней за которые пользователь будет предупрежден об истечении пароля;inactive – количество дней, в течении которых пользователь может быть неактивен перед блокировкой;expire – дата, когда истекает срок пользовательской учетной записи. Отсутствие доступа к /etc/shadow для обычных пользователей конечно усложняет жизнь потенциальным взломщикам, но не исключает полностью возможность получить доступ к хэшам. При наличии физического доступа злоумышленник может загрузиться с флешки и подмонтировав раздел скопировать нужный файл к себе. Аналогично в случае использования виртуализации можно скопировать выключенную виртуалку к себе и затем, также загрузиться со сменного носителя.В случае, если хакер получил права обычного пользователя, например www, он может попытаться повысить привилегии для того, чтобы прочитать файл. Также, если пользователь может загружать любые docker-контейнеры, то при определенных условиях он может получить права на чтение /etc/shadow. Об этом мы подробно поговорим в третьей статье. Не углубляясь в тему взлома (все-таки эта статья больше про администрирование Linux) кратко опишем дальнейшие действия злоумышленника после получения доступа к хэшам паролей.Перебор паролей даже на достаточно мощной машине процесс довольно продолжительный. И для того, чтобы его максимально ускорить существуют наборы сгенерированных заранее хэшей паролей, например все комбинации из цифр длиной до 10 символов, маленьких латинских букв до 10 символов и т.д. Более сложные комбинации тоже можно получить готовыми, но это уже будет стоить денег. Тем не менее взломщик может сэкономить много времени используя готовые хэши. Для решения проблемы использования готовых хэшей разработчики ОС Linux стали использовать соль (salt), то есть набор из нескольких дополнительных байт, который добавлялись к паролю перед хэшированием. Обычно формат пароля, хранимого в /etc/shadow представляет собой:$id $salt $hashed, где $id - алгоритм, которым шифруется пароль ($1 is MD5, $2a is Blowfish, $2y is Blowfish, $5 is SHA-256, $6 is SHA-512). Таким образом, использование соли для шифрования паролей осложняет перебор, так как не позволяет использовать готовые таблицы. В этой статье мы рассмотрели механизмы работы с учетными записями в ОС семейства Linux, в частности механизм обеспечения безопасности при хранении хэшей паролей. В следующей статье мы начнем говорить о настройках доступа и тех ошибках могут допустить администраторы при выполнении этих настроек. Вместо заключения хочу пригласить вас на бесплатные демоуроки по Linux от OTUS. Зарегистрироваться на уроки можно по ссылкам ниже: Базовые понятия Linux, работа в консоли с базовыми командами. Что нужно знать когда переходишь с Windows на Linux. Bash повышенной сложности: массивы, ключи, отладка.