Uid и gid что такое
Пользователи в Linux
Учётные записи
Linux — система многопользовательская, а потому пользователь — ключевое понятие для организации всей системы доступа в Linux. Когда пользователь регистрируется в системе (проходит процедуру авторизации, например, вводя системное имя и пароль), он идентифицируется с учётной записью, в которой система хранит информацию о каждом пользователе: его системное имя и некоторые другие сведения, необходимые для работы с ним. Именно с учётными записями, а не с самими пользователями, и работает система. Ниже приведён список этих сведений.
Системное имя (user name)
Идентификатор пользователя (UID)
Идентификатор группы (GID)
Полное имя (full name)
Помимо системного имени в учётной записи содержится и полное имя (имя и фамилия) использующего данную учётную запись человека. Конечно, пользователь может указать что угодно в качестве своего имени и фамилии. Полное имя необходимо не столько системе, сколько людям — чтобы иметь возможность определить, кому принадлежит учётная запись.
Домашний каталог (home directory)
Файлы всех пользователей в Linux хранятся раздельно, у каждого пользователя есть собственный домашний каталог, в котором он может хранить свои данные. Доступ других пользователей к домашнему каталогу пользователя может быть ограничен. Информация о домашнем каталоге обязательно должна присутствовать в учётной записи, потому что именно с него начинает работу пользователь, зарегистрировавшийся в системе.
Начальная оболочка (login shell)
Важнейший способ взаимодействовать с системой Linux — командная строка, которая позволяет пользователю вести «диалог» с системой: передавать ей команды и получать её ответы. Для этой цели служит специальная программа — командная оболочка (или интерпретатор командной строки), по-английски — shell. Начальная оболочка (login shell) запускается при входе пользователя в систему в текстовом режиме (например, на виртуальной консоли). Поскольку в Linux доступно несколько разных командных оболочек, в учётной записи указано, какую из командных оболочек нужно запустить для данного пользователя. Если специально не указывать начальную оболочку при создании учётной записи, она будет назначена по умолчанию, вероятнее всего это будет bash.
Управление пользователями
Создание пользователей
Все эти действия могут быть выполнены и вручную, однако это довольно неудобно и можно что-нибудь забыть. Для упрощения процесса используется утилита useradd (она же по традиции называется adduser ), для выполнения которой, естественно, потребуются полномочия администратора. В простейшем случае достаточно будет двух шагов:
1Это может оказаться важным, например, в такой ситуации: учётную запись пользователя с именем test удалили из системы, а потом добавили снова. Однако с точки зрения системы это уже другой пользователь, потому что у него другой UID.
2Обычно Linux выдаёт нормальным пользователям UID, начиная с “ 500 ” или “ 1000 ”.
3Как правило, численное значение GID в этом случае совпадает со значением UID.
Изменение UID&GID пользователя и его файлов
Встала тут передо мной задача изменить UID и GID пользователя и правильно изменить владельца всех файлов.
Дело в том, что я работаю за двумя компьютерами попеременно, и файлы mysql лежат у меня на флешке. Получилось так, что id пользователя mysql на обоих компах отличается и мускл не может получить доступ к своим файлам. Присваивать права 0666 скучно, и по этому поводу я решил научиться грамотно изменять uid пользователя 🙂
Изменение идентификатора пользователя и группы
Поиск осиротевших файлов
Однако такой способ не принесёт желаемого результата: некоторые файлы, владельцем которых был ‘mysql:root’ станут принадлежать ‘mysql:mysql’. А мы ведь договорились сделать всё предельно правильно 🙂 Следовательно, поиск по user и по group надо вести отдельно.
Можно выполнить подряд две команды find:
и это уже будет намного ближе к истине, но тогда find ‘у придётся дважды шуршать по всему жёсткому диску.
После недолгого поиска все файлы будут найдены.
Также в исключения можно внести путь к диску с бекапом (он ведь у вас есть, верно? ;), подмонтированные сетевые шары и прочее.
Финиш
Проверка
Если всё было сделано правильно (и в системе не водилось осиротевших файлов) — команда не должна ничего вывести.
Полный код скрипта
Надеюсь, статья окажется полезной. Рекомендую ближе ознакомиться с синтаксисом этой команды: она ведь намного мощнее чем вы думаете 🙂
Напоследок приведу полный код скрипта для смены UID&GID пользователя и его файлов:
Что такое uid и gid?
Как узнать UID и GID?
📑 Команда id — найти UID пользователя или GID
операционных системах, используйте команду id. Эта команда полезна для поиска следующей информации: Получить имя пользователя и реальный идентификатор пользователя Найти UID конкретного пользователя
Что это UID?
Какой UID имеет пользователь root?
Таким образом, root всегда равен uid 0, но uid 0 не обязательно всегда root.
Как узнать UID?
Что такое UID в Linux?
UID обозначает идентификатор пользователя. UID – это номер, назначенный каждому пользователю Linux.
Что такое UID на чеке?
UID (Unique identifier) или УИД — уникальный идентификатор. UID (User identifier) — идентификатор пользователя в операционной системе или на сайте. Всё просто: некоторые идентификаторы являются уникальными, то есть могут принадлежать только одному субъекту (имя может совпадать, а номер паспорта всегда отличается).
Чем отличается ID от UID?
ID и UID — немного разные понятия. UID — это уникальный идентификатор (Unique identifier). Например, серийный номер устройства. ID тоже часто используют для однозначного определения объекта, однако признак уникальности не заложен в определении ID.
Что такое UID товара?
UID, Артикул, ID в товаре, Изменение Артикула товара. Каждому товару при его добавлении на склад присваисается Уникальный идентификатор, который называется UID. Это сделано для того, что бы по каждому товару можно было определить поставщика, дату прихода товара, стоимость закупки и гарантию на товар.
Как узнать UID телефона?
Самый простой способ получить информацию об ID коде – воспользоваться специальной циферно-символьной комбинацией. Для этого нужно войти в меню набора номера, а затем с помощью появившейся клавиатуры ввести *#*#8255#*#* и нажать кнопку вызова. После этого на экране смартфона должен высветиться искомый идентификатор.
Что такое инди идентификатор пользователя?
Что значит идентификатор игрока?
Id (от англ. Identifier) — это уникальный идентификатор учётной записи игрока. Id сродни номеру вашего паспорта, только для Вашего аккаунта в игре. Ни модераторы, ни работники службы технической поддержки никогда не попросят у вас пароль к вашей учётной записи.
Что такое идентификатор пользователя Microsoft?
Доменная часть ИД пользователя — это домен onmicrosoft.com, выбранный при регистрации в Microsoft 365 для бизнеса, или другой домен, например личный домен организации, добавленный в Microsoft 365 для бизнеса.
Как узнать UID Steam?
Как узнать свой логин и пароль на Иви?
Как добавить пользователя в Linux?
Чтобы создать новую учетную запись пользователя, вызовите useradd команду с именем пользователя. При выполнении без какой-либо опции useradd создает новую учетную запись пользователя с использованием настроек по умолчанию, указанных в /etc/default/useradd файле. Вам будет предложено ввести и подтвердить пароль.
[Пост] Управление доступом в Linux
Jan 10, 2018 • zinvapel
Основные правила управления доступом
Объекты (например, файлы и процессы) имеют владельцев. Владельцы обладают обширным (но необязательно неограниченным) контролем над своими объектами.
Основное
Под каждого пользователя, создается свой каталог, пользователю назначается командная оболочка (командный интерпретатор, используемый в операционных системах семейства UNIX). Например: /bin/bash, /bin/zsh, /bin/sh и другие.
Каждому пользователю назначается идентификационный номер (User ID). Сокращенно номер обозначается как UID, является уникальным идентификатором пользователя. Операционная система отслеживает пользователя именно по UID, а не по их имени.
Также, каждому пользователю назначается пароль для входа в систему.
Каждый пользователь принадлежит минимум к одной или нескольким группам.
Помимо пользователей, существуют группы. Так же как и пользователь, группа обладает правам доступа к тем или иным каталогам, файлам, периферии. Для каждого файла определён не только пользователь, но и группа. Группы группируют пользователей для предоставления одинаковых полномочий на какие-либо действия.
Каждой группе назначается идентификационный номер (group ID). Сокращённо GID, является уникальный идентификатором группы. Принадлежность пользователя к группе устанавливается администратором.
Управление пользователями
Просмотр
Каждый аккаунт занимает одну строку, в формате account:password:UID:GID:GECOS:directory:shell
Получение информации о пользователях
Добавление пользователя
Добавление пользователя осуществляется при помощи команды useradd.
sudo useradd vasyapupkin
Изменение пользователя
Изменение параметров пользователя происходит с помощью утилиты usermod. Пример использования:
Изменить пароль пользователю можно при помощи утилиты passwd.
sudo passwd vasyapupkin
Утилита passwd может использоваться и обычным пользователем для смены пароля.
Основные ключи passwd:
Установка пустого пароля пользователя
Супер пользователь с помощью утилит командной строки passwd и usermod или путем редактирования файла /etc/shadow может удалить пароль пользователь, дав возможность входить в систему без указания пароля.
После этого имеет смысл принудить пользователя установить себе новый пароль при следующем входе в систему.
Удаление пользователя
Для того, чтобы удалить пользователя воспользуйтесь утилитой userdel.
sudo userdel vasyapupkin
Управление группами
Создание группы
Программа groupadd создаёт новую группу согласно указанным значениям командной строки и системным значениям по умолчанию.
sudo groupadd testgroup
Изменение группы
Сменить название группы, ее GID или пароль можно при помощи groupmod.
Удаление группы
Утилита groupdel не имеет никаких дополнительных параметров.
sudo groupdel testgroup
Управление пользователями группы
Для управления пользователями группы используется утилита gpasswd. Чтобы занести пользователя в группу:
Вывод пользователя из группы:
Файлы конфигурации
/etc/passwd
В файле /etc/passwd, который упоминался ранее, хранится вся информация о пользователях кроме пароля. Одна строка из этого файла соответствует описанию одного пользователя. Примерное содержание строки таково:
Строка состоит из нескольких полей, каждое из которых отделено от другого двоеточием. Значение каждого поля:
Второе и последнее поля необязательные и могут не иметь значения.
/etc/group
В /etc/group, как очевидно из названия хранится информация о группах. Она записана в аналогичном /etc/passwd виде:
Строка состоит из нескольких полей, каждое из которых отделено от другого двоеточием. Значение каждого поля:
В этом файле второе и четвертое поля могут быть пустыми.
/etc/shadow
Файл /etc/shadow хранит в себе пароли, по этому права, установленные на этот файл, не дают считать его простому пользователю. Пример одной из записей из этого файла:
Sudo и su
Программа su служит для выполнения от имени указанного пользователя (по умолчанию — root) указанной команды/программы (по умолчанию — той программы, что определена в качестве оболочки (shell) для указанного пользователя) и запрашивает она пароль указанного пользователя.
О программе sudo можно сказать почти то же самое, за двумя исключениями:
Управление доступом
Собственно inode является, как идентификатором файла/каталога, так и сущностью, которая содержит в себе информацию о файле/каталоге. Например такую, как: принадлежность к владельцу/группе, тип файла и права доступа к файлу.
Для каждого объекта файловой системы в модели полномочий Linux есть три типа полномочий:
В полномочия записи входят также возможности удаления и изменения объекта. Право выполнения можно установить для любого файла. Потенциально, любой файл в системе можно запустить на выполнение, как программу в Windows. В Linux является ли файл исполняемым или нет, определяется не по его расширению, а по правам доступа. Кроме того, эти полномочия указываются отдельно для владельца файла, членов группы файла и для всех остальных.
Кроме указанного представления полномочий доступа (символьного), существует так же и числовое представление. Для общего понимания, приведу таблицу соответствия числового (двоичного и десятичного) значения прав доступа и буквенного:
владелец | группа | остальные | |
---|---|---|---|
буквенное | rwx | r-x | r– |
двоичное | 111 | 101 | 100 |
двоичное в десятичных | 421 | 401 | 400 |
десятичное | 7 | 5 | 4 |
Управление правами доступа
Управление правами доступа происходит с помощью команды chmod, управление владельцем файла происходит с помощью команды chown. Синтаксис команд следующий:
Использование команды chown выглядит следующим образом: chown user:group file (-R рекурсивно)
Права доступа к символьным ссылкам
Если посмотреть на права символьных ссылок, то они всегда выглядят так: rwxrwxrwx. Дело в том, что права на символьную ссылку не имеют особого значения. При использования ссылки драйвер файловой системы пересчитывает реальный путь к файлу и применяет права доступа, определенные для реального пути уже без учета символьной ссылки.
Специальные атрибуты
Хотелось бы так же провести аналогию с ОС Windows. В указанной операционной системе права регулируются на основе списков ACL. В Linux тоже такое возможно, это реализуется с помощью пакета acl, но данный вопрос в текущей теме я рассматривать не буду. Еще одно важное замечание! В Windows можно определить права доступа на каталог, и они автоматически распространяются на все файлы и поддиректории (если вы явно не указали иного). В Linux права доступа сохраняются в inode файла, и поскольку inode у каждого файла свой собственный, права доступа у каждого файла свои. Так же, права доступа пользователя и группы не суммируются, как в Windows. Если программа выполняется с правами пользователя и группы, которым принадлежит файл — работают только права хозяина файла.
Исполняемый файл с установленным атрибутом suid является “потенциально опасным”. Без установленного атрибута, файл не позволит обычному пользователю сделать то, что выходит за пределы прав пользователя (пример, программа passwd позволяет пользователю изменить только собственный пароль). Но, даже незначительная ошибка в такой программе может привести к тому, что злоумышленник сможет заставить её выполнить ещё какие-нибудь действия, не предусмотренные автором программы. Стоит очень осторожно относиться к данным атрибутам! Как найти в системе файлы с атрибутом SIUD и др.
При создании новой директории в директории с уже установленным SGID-битом, у созданной директории SGID-бит устанавливается автоматически!
Обозначение атрибутов Sticky, SUID, SGID
Права доступа по-умолчанию для вновь создаваемых объектов файловой системе.
В Linux, при создании какого-либо файла или каталога предоставляемые права определяются по определенному алгоритму (формуле). Не вдаваясь в подробности и для большего понимания сути скажу, что есть исходные права доступа:
Узнать текущий umask можно, введя команду umask без параметров. Пример:
📑 Команда id — найти UID пользователя или GID
Эта команда полезна для поиска следующей информации:
Цель
Отображает системные идентификаторы указанного пользователя.
синтаксис команды id
По умолчанию команда id показывает имена пользователей и групп и числовые идентификаторы вызывающего процесса, то есть текущего пользователя, который запускает команду id на экране. Если имя пользователя или идентификатор пользователя ([UserNameHere]) указаны в командной строке, отображаются идентификаторы пользователя и группы этого пользователя.
Показать свой собственный UID и GID
Как найти UID конкретного пользователя?
В этом примере найдите UID пользователя vasia, введите:
Как найти GID конкретного пользователя?
В этом примере найдите GID пользователя vasia, запустите:
Как увидеть UID и все группы, связанные с именем пользователя?
В этом примере найдите UID и все группы, связанные с пользователем с именем «root», введите:
Как узнать все группы, к которым принадлежит пользователь…
В этом примере отобразите UID и все группы, связанные (вторичные группы) с пользователем с именем «vasia», запустите:
1000 20 12 61 79 80 81 98 33 100 204 398 399
Отображать имя вместо UID / GID
Как отобразить реальный идентификатор вместо эффективного идентификатора для указанного пользователя?
Параметры команды id
Смотрите также
man id — Страница руководства по команде id