Какой uid у пользователя sit2 в какие группы он входит
Перейти к содержимому

Какой uid у пользователя sit2 в какие группы он входит

  • автор:

Как вывести список групп в Linux

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

В этом руководстве объясняется, как показать все группы, в которые входит пользователь. Мы также объясним, как составить список всех членов группы.

Группы Linux

Пользователь может принадлежать к двум типам групп:

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

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

Список всех групп, членом которых является пользователь

Есть несколько способов узнать, к каким группам принадлежит пользователь.

Основная группа пользователей хранится в /etc/passwd а дополнительные группы, если таковые имеются, перечислены в /etc/group .

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

Использование команды groups

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

Первая группа — это основная группа.

Чтобы получить список всех групп, к которым принадлежит конкретный пользователь, укажите имя пользователя для команды groups в качестве аргумента:

Как и раньше, первая группа является первичной.

Используя команду id

Команда id выводит информацию об указанном пользователе и его группах. Если имя пользователя не указано, отображается информация для текущего пользователя.

Например, чтобы получить информацию о пользователе linuxize вы должны ввести:

Команда покажет идентификатор пользователя ( uid ), основную группу пользователя ( gid ) и вторичные группы ( groups ) пользователя.

Чтобы напечатать только имена вместо чисел, используйте параметр -n . Опция -g выведет только основную группу и -G все группы.

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

Список всех участников группы

Чтобы getent group список всех членов группы, используйте команду getent group за которой следует имя группы.

Например, чтобы узнать членов группы с именем « developers , воспользуйтесь следующей командой:

Если группа существует, команда напечатает группу и всех ее членов:

Если нет вывода, это означает, что группа не существует.

Список всех групп

Чтобы просмотреть все группы, присутствующие в системе, просто откройте файл /etc/group . Каждая строка в этом файле представляет информацию для одной группы.

Другой вариант — использовать команду getent которая отображает записи из баз данных, настроенных в файле /etc/nsswitch.conf включая базу данных group которую мы можем использовать для запроса списка всех групп.

Чтобы получить список всех групп, введите следующую команду:

Вывод такой же, как при отображении содержимого файла /etc/group . Если вы используете LDAP для аутентификации пользователя, getent отобразит все группы как из файла /etc/group и из базы данных LDAP.

Вы также можете использовать awk или cut для печати только первого поля, содержащего имя группы:

Выводы

В этом руководстве вы узнали, как найти группы, членом которых является пользователь. Те же команды применимы для любого дистрибутива Linux, включая Ubuntu, CentOS, RHEL, Debian и Linux Mint.

Список групп пользователя Linux

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

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

Список групп пользователя Linux

Вы можете посмотреть список групп пользователя Linux двумя основными способами. Это команда id, которую мы уже разбирали в статье о том, как узнать id пользователя Linux, и команда groups. Чтобы вывести всю информацию о пользователе, используйте id:

Чтобы вывести только список групп текущего пользователя, необходимо использовать опцию -G:

Команда выводит идентификаторы групп, если вы хотите получить их имена, то необходимо добавить опцию -n:

Если надо узнать список групп для определённого пользователя, просто передайте его имя в качестве параметра:

id -Gn имя_пользователя

Следующий вариант просмотра списка групп — команда groups:

И точно также можно узнать группу пользователя Linux, передав его имя команде:

Ещё можно посчитать количество групп, в которых состоит пользователь Linux:

Выводы

Как видите, всё очень просто. Вы можете буквально с помощью одной команды посмотреть группы пользователей Linux, причём не только для текущего пользователя, а для всех, кто вас интересует. Если у вас остались вопросы, спрашивайте в комментариях!

Пользователи в Linux. Типы пользователей, управление пользователями.

Сегодня я хочу поговорить о пользователях в Linux. Мы познакомимся с типами пользователей и узнаем в каких файлах хранится связанная с ними информация. Изучим команды позволяющие управлять пользователями и изменять их данные. Рассмотрим примеры создания пользователей с различными параметрами и последующим изменениям пользовательских настроек.

Типы пользователей

В ОС Linux существует три типа пользователей:

root (от англ. root — корень) — суперпользователь, аккаунт в UNIX-подобных системах, владелец которого имеет право на выполнение всех операций без исключения. Присутствует в системе по умолчанию.

Системные пользователи — системные процессы у которых есть учетные записи для управления привилегиями и правами доступа к файлам и каталогам. Создаются системой автоматически.

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

Каждый пользователь помимо имени имеет числовой идентификатор пользователя UID (User IDentificator). Пользователь root имеет идентификатор 0. Системные пользователи имеют идентификаторы от 1 до 100. Обычные пользователи имеют UID от 100.

Пользователи могут объединяться в группы. Каждый пользователь обязательно входит в ту или иную группу. Группы имеют числовой идентификатор группы GID (Group IDentificator).

Информация пользователей

В системе присутствует следующая информация о каждом пользователе:

  • Имя пользователя (user name) — в рамках системы имя должно быть уникальным. В именах должны использоваться только английские буквы, числа и символы _ и . (точка).
  • Идентификационный номер пользователя (UID) — является уникальным идентификатором пользователя в системе. Система отслеживает пользователей по UID, а не по именам.
  • Идентификационный номер группы (GID) — обозначает группу, к которой относится пользователь. Каждый пользователь может принадлежать к одной или нескольким группам. Принадлежность пользователя к группе устанавливает системный администратор, чтобы иметь возможность ограничивать доступ пользователей к тем или иным ресурсам системы.
  • Пароль (password) — пароль пользователя в зашифрованном виде.
  • Полное имя (full name) — помимо системного имени может присутствовать полное имя пользователя, например фамилия и имя.
  • Домашний каталог (home directory) — каталог, в который попадает пользователь после входа в систему. Подобный каталог имеется у каждого пользователя, все пользовательские каталоги хранятся в директории /home.
  • Начальная оболочка (login shell) — командная оболочка, которая будет запускаться при входе в систему. Например, /bin/bash.

Вся информация о пользователях хранится в следующих файлах:

passwd (etc/passwd) — содержит информацию о пользователях, имеет следующий формат записи — «user_name:password:UID:GID:full_name:home_directory:login_shell». Элементы записи должны разделяться символом — «:» (двоеточие) и записываются без пробелов. Если пароль хранится в зашифрованном виде в файле /etc/shadow, то вместо пароля указывается — «x».

group (etc/group) — информация о группах, формат — «group_name:password:GID:user1,user2,user3». Элементы записи должны разделяться символом — «:» (двоеточие) записываются без пробелов. Имена пользователей записываются через запятую.

У файлов /etc/passwd и /etc/group всегда определенные права доступа: чтение и запись для root, для остальных только чтение.

shadow (etc/shadow) — в этом файле хранятся так называемые «теневые пароли», информация о паролях пользователей в зашифрованном виде. Cделано это для безопасности, так как файл /etc/passwd может читаться кем угодно, а файл /etc/shadow может прочитать только root.

gshadow (etc/gshadow) — то же самое что и shadow, только для паролей групп.

Помимо основных, в системе присутствуют дополнительные файлы.

useradd (etc/default/useradd) — файл задающий свойства «по умолчанию» для всех добавляемых пользователей. Можно просмотреть командой — useradd -D.

login.defs (/etc/login.defs) — содержит настройки для создания новых пользователей.

/etc/skel — каталог с дефолтными файлами, которые копируются в домашний каталог каждого пользователя при его создании.

Команды управления

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

useradd или adduser — добавить нового пользователя.

passwd — задать пароль для пользователя.

usermod — изменить параметры учетной записи пользователя.

userdel или deluser — удалить учетную запись пользователя.

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

groupadd — добавляет новую группу.

gpasswd — устанавливает пароль группы.

groupmod — изменение параметров группы.

groupdel — удаление группы.

Обычное добавление пользователя

При создании нового пользователя автоматически указываются несколько параметров. В файле /etc/passwd, заводится запись с указанием имени пользователя, домашнего каталога, UID, GID. В каталог помещаются файлы инициализации командной оболочки. Все можно указать вручную, при помощи дополнительных опций. Список опций можно просмотреть командой useradd —help или useradd -h.

Для создания пользователя достаточно выполнить команду useradd и указать его имя.

Синтаксис команды: useradd options username

Теперь нужно задать пароль для созданного пользователя. Пароль задается командой passwd с указанием имени пользователя.

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

Проверим с какими параметрами был создан пользователь:

Подобным образом команда useradd работает в CentOS и других подобных ему системах, но в Debian или Ubuntu она просто создаст голого пользователя, а все остальное придется добавлять потом вручную.

Чтобы создать пользователя с подобными параметрами в Debian & Ubuntu команда useradd должна выглядеть следующим образом.

Поэтому в Ubuntu & Debian удобнее пользоваться утилитой adduser, при ее использовании нужно будет ответить на несколько вопросов, в процессе ее выполнения будут видны все шаги по созданию нового пользователя.

Проверим как создался пользователь.

Пользователь создался как и в CentOS, за исключением того, что там мы не указывали полного имени «Techlist. «, через запятые должны были быть указаны номера комнаты и телефонов, которые мы пропустили нажав на <Enter>.

Создание пользователя с домашней директорией, отличной от дефолтной директории

По умолчанию команда useradd создает домашний каталог пользователя в директории /home, имя домашнего каталога всегда совпадает с именем пользователя. Например при создании пользователя techlist, создается домашняя директория /home/techlist.

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

Как можно видеть, пользователь techlist создался с домашним каталогом в /opt/tech.

Создание пользователя с определенным UID и GID

Каждому пользователю при его создании присваивается UID, присвоение идет по порядку: 1000, 1001 и т.д. При использовании опции -u пользователю можно задать определенный UID. Для примера создадим пользователя techlist c UID равным 777.

Пользователь создался с UID равным 777, но GID был задан дефолтный — 1001, для того чтобы это исправить можно поступить следующим образом.

Сначала создадим группу techlist c GID равным 777.

Обратите внимание, группа создана но пользователей в нет, теперь можно создать пользователя с UID=777 и указать его принадлежность к группе techlist с помощью опции -g и указания GID 777.

Создание пользователя с указанием принадлежности к нескольким группам

Если пользователь должен принадлежать сразу к нескольким группам, то указывается опция -G, после чего через запятую указываются группы к которым будет принадлежать пользователь.

Допустим что новый пользователь techlist должен принадлежать к следующим группам: group_1, group_2 и group_3.

Создание пользователя без домашнего каталога

Иногда пользователю не требуется домашний каталог, для этого используется опция -M.

Создание пользователя с истекающим сроком действия аккаунта

По умолчанию каждый пользователь не имеет срока действия аккаунта. Срок действия можно установить задав дату истечения аккаунта. Для этого следует использовать опцию -e после которой указывается дата истечения аккаунта в формате YYYY-MM-DD. Создадим пользователя techlist с истечением аккаунта в 2017-05-01, по достижении даты аккаунт будет недействителен.

Создание пользователя с истекающим сроком действия пароля

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

Создание пользователя с указанием доп. информации

Иногда может возникнуть необходимость указать примечание для пользователя, в виде краткой заметки или указания имени и фамилии пользователя. Для этого можно воспользоваться опцией -c. Создадим пользователя vasek, с указанием имени и фамилии Vasya Pupkin.

Создание пользователя с указанием командной оболочки

Для того чтобы указать командную оболочку для пользователя используется опция -s

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

Изменение существующего пользователя

Иногда может потребоваться внести некоторые изменения в аккаунт пользователя. Сделать это можно при помощи команды usermod.

Синтаксис команды: usermod options username

Команда usermod имеет дополнительные опции, посмотреть список доступных опций можно командой usermod -h.

Рассматривать применение команды будем на примере пользователя techlist.

Пользователь был создан с дефолтными настройками.

Добавление доп. информации пользователю

Для начала добавим имя и фамилию пользователя, опцией -c.

Изменение домашнего каталога пользователя

По умолчанию домашним каталогом пользователя techlist является /home/techlist. Изменим его на каталог /opt/techlist, при помощи опции -d и опцией -m перенесем в новый каталог все содержимое старого.

Установка даты истечения срока аккаунта

Назначим дату истечения действия аккаунта, аккаунт будет действовать до 2017-05-01, дата задается опцией -e.

Изменение группы пользователя

Изменим группу пользователя techlist. Сначала посмотрим к каким группам он принадлежит.

Добавим пользователя techlist к группе group_1, используя опцию -g.

Как можно увидеть группа изменилась, если раньше была 1001(techlist), то теперь стала 1002(group_1).

Как добавить пользователя к новой группе без удаления из предыдущей? Для этого существует опция -G.

Теперь пользователь принадлежит одновременно к двум группам 1002(group_1) и 1003(group_2).

Добавление пользователя в дополнительные группы

Для добавления пользователя в одну из дополнительных групп, одновременно используются две опции -a и -G. В качестве дополнительной группы будет выступать группа wheel.

Теперь пользователь techlist относится к дополнительной группе wheel, что может наделить его привилегиями выполнять root-команды.

Изменение имени пользователя

Существующему пользователю можно изменить имя, изменим имя пользователя techlist на techlist_admin, делается это опцией -l.

Блокировка аккаунта пользователя

Для блокировки аккаунта пользователя достаточно выполнить команду с опцией -L.

Разблокировка аккаунта пользователя

Для того чтобы разблокировать аккаунт пользователя, достаточно выполнить команду с опцией -U.

Изменение командной оболочки пользователя

Чтобы изменить командную оболочку пользователя, надо выполнить следующую команду с опцией -s. Изменим пользовательскую оболочку для techlist_admin с /bin/bash/ на /bin/sh/.

Изменение UID и GID пользователя

Для изменения UID пользователя используется опция -u.

Для изменения GID пользователя используется опция -g.

Таким образом можно управлять пользователями и изменять их по своему усмотрению.

Удаление пользователей

Для удаления пользователей в Linux существуют две команды userdel и deluser, команда userdel используется в RedHat — подобных системах, а deluser в Debian и производных системах. Помимо deluser в Debian можно использовать и userdel.

userdel

синтаксис команды: userdel options username

Для того чтобы удалить пользователя, выполняем команду userdel. Команда userdel не удаляет пользователя если он работает в системе, сначала необходимо завершить все связанные с ним процессы. Для просмотра дополнительных опций команды userdel, используется ключ -h.

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

deluser

синтаксис команды: deluser options username

Для просмотра справки используется команда deluser -h.

Настройки команды находятся в файле /etc/deluser.conf, здесь задается поведение утилиты при удалении пользователя.

Правильное удаление пользователя

Под правильным удалением пользователя нужно понимать определенную последовательность команд позволяющих удалить пользователя не оставив мусора и не обрушив систему.

Блокировка пользователя

Удаляемый пользователь не должен быть залогинен в системе и использовать какие либо файлы или программы.

Блокировку пользователя мы рассматривали выше.

Убить все пользовательские процессы

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

Узнаем что это за процессы используя их pid.

Hичего серьезного нет, можно завершать все. Завершение всех процессов вышвырнет пользователя из системы, а заново войти он не сможет, ибо был заранее заблокирован.

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

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

  • Автор: Уваров А.С.
  • 14.12.2019

linux-user-and-group-management-000-0.pngПользователи окружают нас всюду, в современных информационных системах это одно из ключевых понятий, вокруг которого строится вся система разграничения прав доступа и безопасности. Поэтому умение управлять пользователями и группами — это один из основных навыков необходимых любому администратору. Базовые механизмы управления пользователями и доступом в Linux достаточно просты и некоторым могут показаться грубыми, но нельзя осваивать более сложные механизмы, не обладая базовыми навыками, поэтому давайте начинать изучение этой непростой темы с самых ее азов.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

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

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

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

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

linux-user-and-group-management-001.png

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

С именем пользователя все понятно, а вот второй параметр может вызвать некоторое недоумение. Когда-то давно пароли хранились в открытом виде, о чем намекает само название файла, но затем от этой практики отказались и современные системы не хранят пароли в каком-либо виде вообще, хранится только сформированный по специальному алгоритму хеш, такие пароли в 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 выдает сообщение:

linux-user-and-group-management-002.png

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

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

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

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

linux-user-and-group-management-003.png

С учетом вышесказанного есть ряд сложившихся правил работы с этим пользователем. Во-первых, не следует выполнять из-под учетной записи суперпользователя повседневную работу. Для разовых действий используйте 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

linux-user-and-group-management-004.png

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

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

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

linux-user-and-group-management-005.png

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

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

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

linux-user-and-group-management-006.png

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

  • Имя пользователя
  • Хеш пароля, если поле содержит ! или *, это означает, что учётная запись заблокирована и этот пользователь не сможет войти в систему.
  • Дата последней смены пароля — Количество дней, прошедших с 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

linux-user-and-group-management-007.png

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

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

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

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

linux-user-and-group-management-008.png

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

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

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

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

Поддержи проект!

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *