В этой статье рассмотрим, как управлять учетными записями пользователей и групп в Linux. Также посмотрим различные базы данных, в которых хранится информация о пользователях и группах и что такое теневые пароли.
Изначально в Linux было 2 файла /etc/password
и /etc/group
. В первом файле хранилось:
Имя_пользователя : пароль : uid : gid : сведения (поле предназначено для персональных данных) : домашняя_папка : командная оболочк(которая запускается при входе пользователя в систему)
Во втором файле хранилось:
имя_группы : пароль : gid : члены_группы
У группы может быть пароль, но данную функцию очень редко, кто использует, в таком случае пароль будет запрашиваться при смене членства в группе. Данные файлы плохи тем, что у всех пользователей системы, по умолчанию, есть права на чтение. Такие права необходимы потому, что разные пользователи, разные демоны и сервисы обращаются к данным файлам, чтобы брать оттуда информацию. Соответственно в этих файлах хранился пароль пользователя, хотя и в зашифрованном виде, но с помощью различных методов криптографии подбора можно было воспользоваться данным паролем, потому что у всех пользователей был на эти файлы доступ.
Поэтому был создан механизм теневых паролей. Были созданы вот такие 2 файла: /etc/shadow
и /etc/gshadow
. И к этим двум файлам имеет полный доступ только пользователь root
. Следовательно, теперь в файлах passwd
и group
указываются не пароли, а специальные символы, говорящие что пароли были перенесены в файлы shadow
и gshadow
.
В новом файле shadow
хранится побольше информации о пароле пользователя. Это:
- Логин
- Пароль
- Время после смены пароля – это если пароль сбрасывался после времени установки системы
- Минимальный срок действия пароля - как часто можно менять пароль, если, например, стоит 5 дней, то пароль можно менять не чаще, чем раз в 5 дней.
- Максимальный срок действия пароля – максимальное количество дней, по прошествии которых обязательно необходимо сменить пароль.
- Срок предупреждения – за сколько дней до истечения пароля система предупредит о том, что необходимо сменить пароль.
- Время работы с истекшим паролем – это параметр позволяет указанное число дней работать с истекшим паролем.
- Срок для блокировки пароля – данный параметр отвечает за время жизни самого пароля, например, пароль будет работать 100 дней, после этого заблокируется.
Соответственно данные параметры можно при необходимости задавать при создании учетной записи пользователя и паролей. Если провести аналогию с операционной системой Windows, то подобные параметры в Windows мы можем задавать через GPO (Group Policy Object - набор правил или настроек, в соответствии с которыми производится настройка рабочей среды в операционных системах Windows). Отличие заключается в том, что в Windows эти параметры выставляются в абсолютных величинах числом, а в операционной системе Linux, относительно даты 1 января 1970 года.
Ну и соответственно gshadow
имеет следующую структуру, разделенную символом :
.
- Имя группы
- Пароль зашифрованный
- Администраторы, те учетные записи, которые могут менять пароль группы или добавлять другие аккаунты
- Члены групп
Следовательно, пароли могут хранится и в тех, и в тех файлах, отличие в том, что у пользователей есть доступ на чтение к файлам passwd
и group
, а к shadow
и gshadow
только у пользователя root
. Данный механизм называется механизмом теневых паролей, и он присутствует во всех современных Linux системах.
Теперь, посмотрим, как это выглядит в операционной системе.
Заходим в файл passwd
любым текстовым редактором, например, nano
, без повышения привилегий.
Возьмем пользователя:
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
Логин - list
, значок X
говорит о том, что пароль хранится в теневом файле. Далее 38
– id пользователя, 38
- gid, прочая информация - Mailing List Manager
, домашняя папка пользователя - /var/list
и оболочка которая используется при входе - /usr/sbin/nologin
.
Можно увидеть, что вместо оболочки у пользователя указан nologin
– это означает, что пользователь не может войти, используя стандартный экран входа, используя стандартные средства. На картинке можно найти пользователя siadmin
. Можно также увидеть все остальные параметры этого пользователя. У него совпадает uid
и gid
, это связанно с тем , что при создании пользователя создается одноименная группа. Можно, конечно, при создании указать, что пользователь будет входить в другую группу и не создавать одноименную, но по умолчанию она создается. В конце строчки мы можем увидеть /bin/bash
, которая запускается при входе в систему. Можно обратить внимания на uid
и gid
все реальные пользователи их имеют числом выше 1000. Все пользователи, у которых число ниже – это служебные пользователи или созданные автоматически. В некоторых дистрибутивах Linux нумерация реальных пользователей начинается с 500.
Посмотрим файл с группами, вводим команду nano /etc/group
Данная база очень простая. Указано наименование группы, знак X
говорит, о том, что пароль хранится в теневой базе, идентификатор группы и список пользователей в данной группе. Единственный нюанс - если пользователь входит в свою же группу, то после знака двоеточие пользователь не отображается.
Далее файлы /etc/shadow
и /etc/gshadow
, данные файлы не редактируются с помощью текстовых редакторов, а через специальные команды. Данные файлы — это просто хранилище информации. Эти утилиты будут рассмотрены в следующем уроке.
Зайти в эти файлы могут только пользователи имеющие права root
или с помощью команды повышающей привилегии sudo
.
sudo nano /etc/shadow
Теперь мы видим в данном файле через двоеточие:
- Имя пользователя
*
или зашифрованный пароль- Срок с последнего изменения пароля в днях
- Минимальный срок изменения пароля, если 0, то сменить пароль можно сразу
- 99999 - срок действия пароля, 7 - количество дней за которое до истечения пароля придет предупреждение
Символ *
говорит о том, что под данным пользователем нельзя зайти стандартным способом, обычно это применяется для служебных аккаунтов, т.е вход вообще заблокирован под данным аккаунтом.
Вот так вот реализуется механизм теневых паролей.