Меню

Формат файла group linux

Фундаментальные основы Linux. Часть VII. Управление локальными учетными записями пользователей

Глава 29. Группы пользователей

Учетные записи пользователей системы могут объединяться в рамках групп . Концепция групп пользователей позволяет устанавливать права доступа на уровне групп пользователей вместо установки аналогичных прав доступа для каждого отдельного пользователя.

В каждом дистрибутиве Unix или Linux имеется инструмент с графическим интерфейсом для управления группами пользователей. Пользователям, не имеющим опыта работы с данными системами, рекомендуется использовать именно эти инструменты. Более опытные пользователи могут использовать инструменты с интерфейсом командной строки для управления учетными записями пользователей, проявляя при этом осторожность: некоторые дистрибутивы не позволяют работать одновременно с инструментами для управления группами пользователей с графическим интерфейсом и интерфейсом командной строки (примером может служить инструмент YaST из состава дистрибутива Novell Suse). Опытные системные администраторы могут осуществлять непосредственное редактирование соответствующих файлов с помощью текстового редактора vi или утилиты vigr .

Утилита groupadd

Файл group

Первым полем в строке с описанием группы пользователей является имя группы. Во втором поле размещается (зашифрованный) пароль группы (это поле может быть пустым). В третьем поле размещается идентификатор группы или значение GID . Четвертое поле является списком членов группы, который в данном случае является пустым, так как в группах нет пользователей.

Команда groups

Утилита usermod

Проявляйте осторожность при использовании утилиты usermod для добавления пользователей в группы. По умолчанию утилита usermod будет удалять пользователя из всех групп, в которых он состоял, если имена данных групп не были переданы в составе команды! Использование параметра -a (append — дополнение) позволяет избежать данного поведения.

Утилита groupmod

Утилита groupdel

Утилита gpasswd

Утилита newgrp

Утилита vigr

По аналогии с утилитой vipw, утилита vigr может использоваться для редактирования файла /etc/group в ручном режиме, так как она осуществляет корректную блокировку этого файла в процессе редактирования. Текстовый редактор vi или утилита vigr может использоваться для управления группами пользователей исключительно опытными системными администраторами.

Практическое задание: группы пользователей

1. Создайте группы пользователей tennis, football и sports.

2. С помощью одной команды сделайте пользователя venus членом групп tennis и sports.

3. Переименуйте группу пользователей fotball в foot.

4. Используйте текстовый редактор vi для добавления пользователя serena в группу пользователей tennis.

5. Используйте команду id для того, чтобы убедиться, что пользователь serena состоит в группе пользователей tennis.

6. Сделайте кого-либо из пользователей ответственным за управление членством пользователей в группах foot и sports. Проверьте работоспособность использованного механизма.

Корректная процедура выполнения практического задания: группы пользователей

1. Создайте группы пользователей tennis, football и sports.

2. С помощью одной команды сделайте пользователя venus членом групп tennis и sports.

3. Переименуйте группу пользователей fotball в foot.

4. Используйте текстовый редактор vi для добавления пользователя serena в группу пользователей tennis.

5. Используйте команду id для того, чтобы убедиться, что пользователь serena состоит в группе пользователей tennis.

6. Сделайте кого-либо из пользователей ответственным за управление членством пользователей в группах foot и sports. Проверьте работоспособность использованного механизма.

Источник

/etc/group Структура файла — что означает (формат записей). Данные о группа Linux

Primary tabs

Forums:

Файл /etc/group содержит имена групп, присутствующих в ОС Linux, и списки членов каждой группы.

Пример записи /etc/group

Например, в файле /etc/group может содержаться такая строка:

В данном случае:

  • в системе имеется группа daemon с идентификатором равным 2.
  • В данную группу входят пользователи (трое):
    root, bin и daemon.

Структура /etc/group

Каждая запись файла /etc/group представляет одну группу и содержит 4 поля:

  1. Имя группы. По умолчанию при создании нового пользователя создается также его группа с таким же именем, как и регистрационное имя пользователя.
  2. Зашифрованный пароль или символ $х$, указывающий на использование файла /etc/gshadow;
  3. Идентификатор группы. (число)
  4. Список членов, разделенный запятыми без пробелов.

: одноименный с названием группы пользователь может существовать в системе и входить в эту группу, но не быть перечисленным в этом списке. Сведения о том, что он в неё входит можно получить из /etc/passwd (об этом сказано ниже).

Также могут оказаться полезными следующие сведения:

  • Как и в файле /etc/passwd, поля разделяются двоеточиями.
  • Длина имени группы не должна превышать 8 символов из соображений совместимости, хотя в ОС Linux такого ограничения нет.
  • Несмотря на наличие поля пароля (с помощью которого пользователи могут присоединиться к группе, выполнив команду newgrp) пароль задается редко. В большинстве случаев в это поле вводятся звездочки, но можно оставить его пустым.
  • Команда newgrp не сменит группу без пароля, если только пользователь не указан как член этой группы.
  • Если в файле /etc/passwd пользователь объявлен членом определенной группы, а в файле /etc/group -нет, пользователь все равно включается в группу. На этапе регистрации членство в группе проверяется по обоим файлам, но лучше согласовывать их содержимое.

Источник

Understanding /etc/group File

Understanding the /etc/group File

It stores group information or defines the user groups i.e. it defines the groups to which users belong. There is one entry per line, and each line has the following format (all fields are separated by a colon (:)

Fig.01: Sample entry in /etc/group file

More About User Groups

Users on Linux and UNIX systems are assigned to one or more groups for the following reasons:

  • To share files or other resource with a small number of users
  • Ease of user management
  • Ease of user monitoring
  • Group membership is perfect solution for large Linux (UNIX) installation.
  • Group membership gives you or your user special access to files and directories or devices which are permitted to that group
  • No ads and tracking
  • In-depth guides for developers and sysadmins at Opensourceflare✨
  • Join my Patreon to support independent content creators and start reading latest guides:
    • How to set up Redis sentinel cluster on Ubuntu or Debian Linux
    • How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
    • How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
    • A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
    • How to protect Linux against rogue USB devices using USBGuard

Join Patreon

User tom is part of both ‘Web developers’ and ‘Sales’ group. So tom can access files belongs to both groups.

Task: View Current Groups Settings

Type any one of the following command:
$ less /etc/group
OR use the more command:
$ more /etc/group
OR use the cat command:
$ more /etc/group

Task: Find Out the Groups a User Is In

Type the following groups command:
$ groups
$ groups
$ groups vivek
Sample outputs:

Task: Print user / group Identity

Use the id command to display information about the given user.

Display only the group ID, enter:

Use the id command:
$ id -g
$ id -g user
$ id -g vivek
OR
$ id -gn vivek

Display only the group ID and the supplementary groups, enter:

$ id -G
$ id -G user
$ id -G vivek
OR
$ id -Gn vivek

🐧 Get the latest tutorials on Linux, Open Source & DevOps via

Источник

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Linux — начинающим. Часть 6. Управление пользователями и группами. Теория

Linux — начинающим. Часть 6. Управление пользователями и группами. Теория

Пользователи окружают нас всюду, в современных информационных системах это одно из ключевых понятий, вокруг которого строится вся система разграничения прав доступа и безопасности. Поэтому умение управлять пользователями и группами — это один из основных навыков необходимых любому администратору. Базовые механизмы управления пользователями и доступом в Linux достаточно просты и некоторым могут показаться грубыми, но нельзя осваивать более сложные механизмы, не обладая базовыми навыками, поэтому давайте начинать изучение этой непростой темы с самых ее азов.

Чтобы понять современную систему пользователей в Linux сделаем небольшой экскурс в историю. Как известно, Линус Торвальдс создавал ОС по образу и подобию UNIX и поэтому в основе Linux лежат многие простые и изящные решения этой системы. Одна из замечательных абстракций UNIX — это все есть файл, т.е. файлами также являются устройства, процессы, сетевые сокеты и т.д. и т.п. Это позволяет делать при помощи достаточно простых инструментов довольно сложные вещи, например, чтобы сделать образ диска достаточно просто скопировать файл блочного устройства в файл образа, а для работы с последовательным портом достаточно прочитать или записать что-либо в файл устройства ввода-вывода.

У каждого файла обязательно есть владелец и группа, которой он принадлежит. На этой схеме строится классическая система прав в Linux и UNIX: владелец, группа и остальные. Более подробно о ней вы можете прочитать в предыдущих частях нашего цикла:

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

Условно всех пользователей можно разделить на специальных, служебных и обычных, но повторимся еще раз — деление это условное, все различие между ними заключается в предоставляемых им правах и некоторых иных возможностях. Чтобы получить список пользователей системы откроем файл /etc/passwd:

Давайте рассмотрим его структуру подробнее. Каждая строка соответствует одному пользователю и имеет следующий формат:

С именем пользователя все понятно, а вот второй параметр может вызвать некоторое недоумение. Когда-то давно пароли хранились в открытом виде, о чем намекает само название файла, но затем от этой практики отказались и современные системы не хранят пароли в каком-либо виде вообще, хранится только сформированный по специальному алгоритму хеш, такие пароли в Linux называются затененными ( shadow). Для такого пароля во втором поле всегда ставится символ x.

UID (User identifier) и GID (Group identifier) — числовые идентификаторы пользователя и группы. Важно понимать, что система различает пользователей именно по UID, а не по наименованиям и многие системы имеют возможность создать несколько пользователей с одинаковым UID, с точки зрения системы это будет один и тот же пользователь.

Этим часто пользуются злоумышленники, один из типовых сценариев проникновения предусматривает создание пользователя с неприметным именем, но идентификаторами root, что позволяет действовать в системе от имени суперпользователя не привлекая ненужного внимания.

В реальных сценариях данную возможность использовать не следует, так как наличие таких пользователей может вызвать конфликты в системе. Например, Gnome 3 в Debian 10 просто отказался загружаться после того, как мы создали такого пользователя.

В поле комментарий можно написать все что угодно, определенного формата в современных системах нет, но исторически данное поле называется GECOS и подразумевает перечисление через запятую следующих опций:

Следующие два поля указывают на домашнюю директорию пользователя и его командную оболочку. Разным пользователям можно назначить разные командные оболочки, скажем, ваш коллега предпочитает zsh, то вы можете без проблем назначить ему любимую оболочку.

Рассмотрение командных оболочек Linux выходит за рамки данной статьи, поэтому мы оставим эту тему, но расскажем о двух специализированных «оболочках», которые указывают, когда пользователю запрещен интерактивный вход в систему. Это обычно применяется для служб и пользователей от имени которых исполняются некоторые скрипты. Даже если такая учетная запись будет скомпрометирована войти в консоль с ней не удастся.

Обычно для этой цели используется:

В современных системах директория /sbin является символической ссылкой на /usr/sbin. Реже используется «оболочка»:

Разница между ними заключается в том, что /bin/false просто запрещает вход в систему, а /sbin/nologin выдает сообщение:

Как мы уже говорили выше, всех пользователей можно условно разделить на три группы. К специальным пользователям относятся root (суперпользователь) и nobody (с группами root и nogroup). Это практически полные противоположности, root имеет наименьшие UID и GID — 0 и является обладателем неограниченных прав, он имеет доступ к любому объекту системы и может выполнять любые настройки. В отличие от Администратора Windows, который максимально огражден от деструктивных действий, root может с легкостью уничтожить систему.

Мы думаем, что следующая команда известна каждому, а некоторым — печально известна:

Предупреждение! Данная команда уничтожает корневую файловую систему, что приводит к ее полной неработоспособности и потере всех данных. Приведена сугубо в качестве примера.

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

С учетом вышесказанного есть ряд сложившихся правил работы с этим пользователем. Во-первых, не следует выполнять из-под учетной записи суперпользователя повседневную работу. Для разовых действий используйте sudo, для административных работ допустимо временно повышать привилегии с последующим обязательным выходом. Во-вторых, доступ к данной учетной записи должен быть тщательно ограничен, потому как утеря контроля над root равносильно полной потере контроля над системой.

Хорошая практика — сделать учетную запись root недоступной для интерактивного входа (как в Ubuntu) используя для повышения прав исключительно sudo, особенно это касается серверов с доступом к SSH из сети интернет.

Пользователь nobody (никто) — имеет наибольший идентификатор — 65534 и не может являться владельцем ни одного файла в системе, не состоит ни в одной привилегированной группе и не имеет никаких полномочий кроме стандартных. Используется для запуска от его имени процессов с низким уровнем доверия, чтобы ограничить их доступ к системе в случае возможной компрометации. Фактически к nobody будут всегда применяться права для «остальных» и при стандартных наборах привилегий 644 на файлы и 755 на директории он будет иметь возможность исключительно чтения и просмотра содержимого каталогов. Для чувствительных конфигурационных файлов, ключей и сертификатов используются более ограниченные наборы прав 640 или 600, к таким файлам nobody доступа не имеет.

Следующая условная группа — системные пользователи, которые используются для запуска служб и доступа к устройствам, например, www-data для веб-сервера или systemd-network для управления сетью через systemd. Первоначально для них выделялись идентификаторы от 1 до 100, но в связи с большим количеством служб в современных системах этот диапазон расширен до 499 в RHEL и производных от него, и до 999 в системах основанных на Debian.

Существует соглашение, что этот диапазон идентификаторов используется только системными службами и в нем не должно быть обычных пользователей. Однако никто не мешает назначить службе UID выше 1000, а пользователю менее 999, но никаких последствий это иметь не будет и никак не скажется на привилегиях. Это разделение чисто условное и предназначено для повышения удобства администрирования. Встретив в незнакомой системе пользователя с UID до 999, вы будете с большой долей вероятности предполагать, что это служба.

Кроме того, для многих стандартных пользователей идентификаторы зарезервированы, так во всех Debian и основанных на нем дистрибутивах www-data имеет UID и GID — 33, а proxy — 13. Это удобно, скажем вместо:

Но это тоже условность, скажем в отсутствии установленного веб-сервера мы можем назначить «зарезервированный» UID другому пользователю без каких-либо последствий, веб-сервер при установке возьмет ближайший свободный UID, но такие действия безусловно являются дурным тоном.

Многое стороннее ПО, например, сервер 1С и сборки PostgresPro занимают ближайшие свободные идентификаторы с верхнего конца диапазона: 999, 998 и т.д.

Из всего изложенного выше вы должны понимать, что система определяет пользователей по идентификаторам, а не по именам, а присвоение идентификаторов регулируется определенными правилами, но никакие из них, кроме двух специальных (0 для root и 65534 для nobody), не дают каких-либо дополнительных прав или привилегий.

Для более гибкого управления пользователями предназначены группы, они позволяют объединять пользователей по любому произвольному принципу и назначать им дополнительные права. Если мы хотим разрешить пользователю повышение прав, то мы включаем его в группу sudo, при этом мы всегда можем легко узнать, кто именно обладает такой возможностью, достаточно посмотреть участников группы.

Посмотреть список групп можно в файле /etc/group

Он имеет следующий формат:

Большая часть полей аналогична записям в файле /etc/passwd и мы не будем подробно останавливаться на них. Разберем последний параметр — пользователи группы. При создании пользователя в Linux, если не указано иное, ему автоматически создается основная группа с повторяющим имя названием. Такой пользователь в последнем поле не указывается. Это хорошо видно на скриншоте выше. Но мы можем создать и отдельную группу, которая первоначально не содержит пользователей, и она будет иметь точно такой же вид записи с пустым последним полем.

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

Давайте внимательно посмотрим на скриншот и проанализируем членство созданного при установке пользователя andrey в дополнительных группах. Практически все они связанны с доступом к оборудованию или дают возможность использовать некоторые системные механизмы, скажем группа plugdev предоставляет возможность монтировать съемные устройства.

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

Теперь о паролях, как мы уже говорили, современные системы не хранят пароли в открытом виде, а используют для этого хеши — односторонние криптографические функции, при вводе пароля система вычисляет его хеш и сравнивает с уже сохраненным, если хеши совпадают — то пароль введен верно. Такие пароли в Linux называются «затененными» и хранятся в отдельных файлах. Для пользователей это файл /etc/shadow:

Синтаксис этого файла предусматривает девять полей, содержащих следующую информацию:

  • Имя пользователя
  • Хеш пароля, если поле содержит ! или *, это означает, что учётная запись заблокирована и этот пользователь не сможет войти в систему.
  • Дата последней смены пароля — Количество дней, прошедших с 1 января 1970 г.
  • Число дней, которое должно пройти до смены пароля — Минимальный срок (в днях), который должен пройти, прежде чем пользователь сможет сменить пароль.
  • Число дней, после которого необходимо сменить пароль — Максимальный срок (в днях), по истечении которого необходимо сменить пароль.
  • Число дней до предупреждения о необходимости смены пароля — Число дней до истечения срока действия пароля, в течение которых пользователь получает предупреждение об окончании его срока действия.
  • Число дней до отключения учётной записи — Число дней после окончания срока действия пароля до отключения учётной записи.
  • Дата отключения учетной записи — Количество дней, прошедших с 1 января 1970 г.
  • Зарезервированное поле

Наибольший интерес представляет второе поле, содержащее хеш пароля, оно имеет структуру:

Где ID — применяемый тип шифрования, могут использоваться следующие значения:

  • $1 — MD5, самый слабый хеш, в настоящее время не используется
  • $2 — Blowfish, использовался в BSD-системах
  • $5 — SHA-256
  • $6 — SHA-512

В современных системах используется наиболее стойкий хеш SHA-512.

Следующая часть строки — SALT — это соль (модификатор), генерируется случайно для каждого пользователя и используется для увеличения стойкости пароля. Хеш — это односторонняя криптографическая функция, которая позволяет быстро вычислить результат, но сделать обратное преобразование хеша невозможно. Единственный возможный вариант атаки — это подбор. Существуют уже вычисленные значения хеша для наиболее часто используемых сочетаний и словарных слов, т.н. радужные таблицы, с их помощью атака на хеш производится поиском по уже готовой базе.

Соль позволяет исключить атаки при помощи заранее вычисленных значений и при ее случайном значении позволяет скрыть наличие у пользователей одинаковых паролей. На скриншоте выше пользователям ivan и maria были установлены одинаковые пароли, но за счет различной соли они имеют различный хеш.

Ну и наконец ENCRYPTED — это, собственно, хеш. Кроме того, данное поле может содержать спецсимволы: *, ! и !!. Все они обозначают, что учетная запись заблокирована для входа с паролем, но не запрещают иные варианты входа (по SSH-ключу). Символ * обычно используется для системных учетных записей, которым вход в систему запрещен, ! ставится для записей пользователей без пароля или заблокированных администратором (тогда ! ставится перед содержимым поля). Иногда используется символ !!, означающий что данной учетной записи никогда не присваивался пароль (также для такой записи может использоваться просто !).

Для групп используется аналогичный по назначению файл /etc/gshadow

Его структура более проста, а поля имеют следующее назначение:

  • Имя группы
  • Хеш пароля, если пароль установлен, не члены группы могут войти в нее, выполнив команду newgrp и указав пароль. Если это поле содержит * или !, ни один пользователь не сможет войти в неё указав пароль.
  • Администраторы группы — Перечисленные здесь (через запятую) члены группы могут добавлять или удалять членов группы с помощью команды gpasswd.
  • Члены группы — Здесь перечисляются (через запятую) обычные члены группы, не администраторы.

Поле пароля также может содержать спецсимволы и также как для пользователей символ * используется преимущественно для системных групп, а ! для групп пользователей. По умолчанию пароли групп отсутствуют и вход в них заблокирован, т.е. никто, кроме членов группы, не может войти в группу, а членам пароль не нужен.

Файлы shadow и gshadow содержат важную учетную информацию и должны быть хорошо защищены. Владельцами этих файлов является root:shadow и права доступа для них установлены как 640. Это означает, что вносить изменения в них может только владелец — root, а читать только члены специальной группы shadow. Это дополнительный уровень безопасности, позволяющий исключить доступ к этим файлам добавлением пользователя в группу root (что даст доступ на чтение к другим конфигурационным файлам).

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

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

Дополнительные материалы:

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Или подпишись на наш Телеграм-канал:

Источник

Читайте также:  Windows movie maker как установить время
Adblock
detector