Перейти к содержанию

Пользователи и права

Ядро Linux работает с UID (User ID)

Узнать id пользователя можно с помощью команды:

id

Пример вывода

Имя: devops
UID: 1000
группа: devops
GID: 1000

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

Посмотреть список учетных записей можно с помощью команды

cat /etc/passwd

Пример вывода команды:

devops:x:1000:1002:devops:/home/devops:/bin/bash
  |    |   |    |    |         |           |-оболочка пользователя 
  |    |   |    |    |         |-домашнаяя директория 
  |    |   |    |    |-описание учетной записи
  |    |   |    |-GID
  |    |   |-UID
  |    |-зашифрованный пароль
  |-имя пользователя

Права

-rw-rw-r--

Первые три символа - владелец

Вторвые три символа - группа владельца

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

r = 4

x = 1

w = 2

Сумма этих трех символов складываются в итоговое значение

rwx = 4 + 2 + 1 = 7

rw- = 4 + 2 = 6

r-x = 4 + 1 = 5

r-- = 4

Пример файла:

chmod 750 file.txt

Переводится так:

владелец: rwx

группа: r-x

остальные: ---

Tip

Чтобы переходить внутрь директории у нее должно быть свойство x

chmod 000 убирает все права доступа, но у root есть приивилегии все смотреть


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

Для создания локальной учетной записи используется команда:

sudo useradd -m -s /bin/bash tester

где -m создает домашнюю директорию, -s устанавливает оболочку пользователя

после создания пользователя мы можем посмотреть его:

id tester

Пример вывода:

uid=1001(tester) gid=1002(developers) groups=1002(developers)

Супер команда

Если хочется посмотреть все права на весь путь до файла, то можно исползовать команду namei -l /path/to/file что выведет весь маршрут и права директорий и файла


Редактирование групп пользователей

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

sudo usermod -aG group user

где -a добавляет пользователя в группу, -G нужно изменить группу а не создать новую

Warning

без ключа -a происходит перезатирание старых групп на новую


umask

Маска которая убирает определенные права при создании файлов и каталогов.

bash -> umask -> 0022

при создании файла программа обычно запрашивает права 666, а каталог 777.

Пример работы:

Исохдные права - 666

umask - 022

Результат прав - 644

umask не меняет права уже созданных файлов, он действует на процесс


SGID (Set Group ID)

SGID на каталоге заставляет новые файлы наследовать группу каталога.

Проблема: новые файлы наследуют группу процесса, а не группу developers

Решение:

sudo chown root:developers /srv/developers
sudo chmod 2770 /srv/developers

Теперь все что будет создано в developers будет наследовать группу developers


SUID (Set User ID)

применяется к исполняемым файлам +x

буква s в правах владельца -> SUID

Когда user запускает такую программу, процесс получает эффективный UID владельца исполняемого файла.

Отличия SUID & SGID

Термин Описание
SUID на исполняемом файле запуск с эффективным UID владельца файла
SGID на исполняемом файле запуск с эффективным GID группы файла
SGID на каталоге наследование группы при создании объектов

Как применять SUID & SGID

при использовании chmod можно применять доп параметры:

chmod 2755 directory
где первая цифра может быть одной из:

4 - SUID

2 - SGID

1 - sticky bit


sticky bit

специальный бит прав доступа в Linux, который применяется только к директориям.

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

Это полезно для предотвращения случайного удаления чужих файлов.

Установка sticky bit

chmod o+t /путь/к/директории

Удаление sticky bit

chmod o-t /путь/к/директории

Последняя проверка 09.10.2026