Сайт
Чукина
Владимира
Владимировича

18 апреля 2024 г.

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

Введение в систему аутентификации

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

  • - пользователь root
  • - системные (фиктивные) пользователи
  • - обычные пользователи
Каждому пользователю кроме имени присваивается числовой идентификатор пользователя (UID, User IDentificator). Пользователь root имеет UID равный 0. Системные пользователи имеют идентификаторы от 1 до 499. Обычные пользователи имеют UID от 500.
Для удобства управления доступом пользователей к файлам системы пользователи объединяются в группы. Каждый пользователь входит хотя бы в одну группу. Группе присваивается числовой идентификатор группы (GID - Group IDentificator).

Информация о пользователях хранится в файлах:
ФайлОписание
/etc/passwdпользователи
/etc/groupгруппы пользователей
/etc/shadowзашифрованные пароли пользователей
/etc/gshadowзашифрованные пароли групп

Дополнительная информация располагается в файлах:
ФайлОписание
/etc/default/useraddсвойства по умолчанию для новых пользователей
/etc/login.defsнастройки новых пользователей
/etc/skel/каталог, файлы из которого копируются в домашний каталог нового пользователя


Файл /etc/passwd имеет следующий текстовый формат:

имя_пользователя:пароль:UID:GID:комментарий:домашний_каталог:командная_оболочка

Все элементы записи разделяются символом : (двоеточие) и пишутся без пробелов. В случае, если пароль хранится в зашифрованном виде в файле /etc/shadow, то вместо пароля указывается символ x (икс).


Файл /etc/group имеет следующий текстовый формат:

имя_группы:пароль:GID:пользователь1,пользователь2,пользователь3

Все элементы записи разделяются символом : (двоеточие) и пишутся без пробелов. Список пользователей группы разделяется символом , (запятая).

К файлам /etc/passwd и /etc/group должны быть заданы права доступа: чтение и запись для пользователя root и только чтение - для всех остальных (644).

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

Для управления пользователями служат команды.
КомандаОписание
useraddдобавить нового пользователя
passwdустановить пароль пользователя
usermodизмененить параметры учетной записи пользователя
userdelудалить учетную запись пользователя

Для управления группами служат команды.
КомандаОписание
groupaddсоздать новую группу
gpasswdустановить пароль группы
groupmodизмененить параметры группы
groupdelудалить группу

Управление правами доступа к файлам и каталогам

Каждому файлу на диске соответствует один индексный дескриптор файла, где содержится служебная информация о файле. Первые два байта дискриптора файла служат для хранения информации о типе и правах доступа к файлу. Слово данных (два байта) можно отобразить в виде последовательности шестнадцати бит:
1514131211109876543210
тип файлаSUIDSGIDT-битправа владельцаправа группыправа всех остальных

Первые четыре бита отвечают за тип файла:

Двоичный кодДесятичный кодТип файла
101010сокет
110012символическая ссылка
10008обычный файл
01106блочное устройство
01004каталог
00102символьное устройство
00011именованный канал

Далее следуют три бита, значение которых будет рассмотрено в следующем пункте.

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

Двоичный кодВосьмеричный кодПрава доступа к файлу
1004чтение (r)
0102запись (w)
0011выполнение (x)
1106чтение и запись (rw)
1015чтение и выполнение (rx)
0113запись и выполнение (wx)
1117чтение, запись и выполнение (rwx)
0000нет доступа

Для управления правами доступа к файлам служит команда:

chmod [uga] [+-=] [rwx] имя_файла

Например, для того, чтобы позволить владельцу файла и группе читать и редактировать файл test.txt необходимо выполнить команду:

chmod ug=rw test.txt

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

chmod 660 test.txt

Для изменения владельца и группы, к которым принадлежит файл служат команды.
КомандаОписание
chown владелец имя_файлаизменить владельца файла
chgrp группа имя_файлаизменить группу, к которой принадлежит файл

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

Биты 11, 10, 9 в первом слове дескриптора файла определяют дополнительные свойства файла.
Бит 9 указывается для каталогов и показывает возможность удаления файлов в этом каталоге только владельцем файлов. Например, для защиты от удаления файлов из каталога test всеми остальными установить этот T-бит (бит защищенности) в значение 1 с помощью команды:

chmod a+t test

Бит 11 (бит SUID) позволяет любому пользователю выполнять исполняемый файл с правами владельца этого файла.
Бит 10 (бит SGID) позволяет любому пользователю выполнять исполняемый файл с правами группы этого файла.
Например, может быть задана возможность исполнения скрипта script.sh кем угодно с правами владельца и группы с помощью команды:

chmod ug+s script.sh


И, наоборот, для отмены такой возможности:

chmod ug-s script.sh


Для поиска файлов с установленными битами SUID и SGID можно выполнить команду:

find / -type f -perm /6000

Для каждого найденного файла можно выполнить команду. Например, для отображения информации о файлах с установленными битами SUID и SGID командой ls -ld необходимо выполнить команду:

find / -type f -perm /6000 \-exec ls -ld {} \;

Для выполнения некоторых команд от имени суперпользователя служит команда sudo. Для получения такой возможности непривелигерованный пользователь должен иметь запись в файле /etc/sudoers. Редактирование этого файла лучше осуществлять командой visudo, которая запустит текстовый редактор vim, заблокирует на время файл /etc/sudoers и проверит введенные данные.
Например, для разрешения пользователю master выполнять команды /bin/mount и /bin/umount в файле /etc/sudoers необходимо добавить строки:
User_Alias USERS=master
Cmd_Alias  COMMANDS=/bin/mount,/bin/umount
USERS      ALL=COMMANDS
Чтобы дать пользователю master права суперпользователя необходимо записать в файл /etc/sudoers:
master      ALL=(ALL) ALL
Для получения возможности выполнять команды без ввода пароля:
master      ALL=(ALL) NOPASSWD: ALL



Ссылки по теме

Использование UNIX: Часть 4. Права владельца и разрешения UNIX для защиты личной информации и безопасного совместного использования
Курс молодого бойца. Основы управления доступом к файлам
Что такое права доступа и биты SUID, SGID
Православное радио "Воскресенье"   Валаамский монастырь   Медиа-сервер "Россия Православная"   Интернет-магазин "ЛинуксЦентр"   Яндекс цитирования   Valid CSS!   Valid XHTML 1.0 Strict!   Unicode Encoded Badge