Сведения о пользователях и группах в Linux
В этой статье рассмотрим, как управлять учетными записями пользователей и групп в 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 .
Теперь мы видим в данном файле через двоеточие:
- Имя пользователя
- * или зашифрованный пароль
- Срок с последнего изменения пароля в днях
- Минимальный срок изменения пароля, если 0, то сменить пароль можно сразу
- 99999 — срок действия пароля, 7 — количество дней за которое до истечения пароля придет предупреждение
Символ * говорит о том, что под данным пользователем нельзя зайти стандартным способом, обычно это применяется для служебных аккаунтов, т.е вход вообще заблокирован под данным аккаунтом.
Вот так вот реализуется механизм теневых паролей.
Список групп пользователя Linux
В операционных системах семейства Linux у пользователя есть основная группа, а также определённое количество дополнительных групп. Это удачное, стратегически продуманное решение. С помощью этих групп можно давать пользователю доступ к нужным файлам в системе, не давая ему прав владельца этими файлами и не открывая для них общий доступ.
Более подробно про использование групп читайте в статье группы в Linux, а в этой заметке мы поговорим о том, как посмотреть список групп пользователя Linux.
Список групп пользователя Linux
Вы можете посмотреть список групп пользователя Linux двумя основными способами. Это команда id, которую мы уже разбирали в статье о том, как узнать id пользователя Linux, и команда groups. Чтобы вывести всю информацию о пользователе, используйте id:
Чтобы вывести только список групп текущего пользователя, необходимо использовать опцию -G:
Команда выводит идентификаторы групп, если вы хотите получить их имена, то необходимо добавить опцию -n:
Если надо узнать список групп для определённого пользователя, просто передайте его имя в качестве параметра:
Следующий вариант просмотра списка групп — команда groups:
И точно также можно узнать группу пользователя Linux, передав его имя команде:
Ещё можно посчитать количество групп, в которых состоит пользователь Linux:
Выводы
Как видите, всё очень просто. Вы можете буквально с помощью одной команды посмотреть группы пользователей Linux, причём не только для текущего пользователя, а для всех, кто вас интересует. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.