Теоретические сведения
В ОС Linux существует три типа пользователей: пользователь root, обычные пользователи и системные пользователи. Каждый пользователь имеет в системе учетную запись.
Информация об учетных записях хранится в текстовом файле /etc/passwd.
Зашифрованные пароли обычно хранятся /etc/shadow
Системный пользователь – это не человек, а процесс, выполняющийся на компьютере. В отличии от обычных пользователей системные пользователи не имеют начальных каталогов и паролей, поэтому в систему нельзя войти под именем системного пользователя.
2. Идентификаторы пользователей и групп.
Компьютер – это машина, работающая с числами. Он идентифицирует пользователей по номерам, известным, как идентификатор пользователя (UID) и идентификатор группы (GID). Пользователь root имеет неограниченные права в системе, его UID, GID равны 0.
Идентификаторы в диапазоне от 1 до 499 и 65534 зарезервированы для системных пользователей. Идентификаторы для людей начинаются с 500.
Вход пользователя root сигнализируется знаком # в начале командной строки в консоли. Обычный пользователь обозначается знаком $, например:
3. Права доступа
Права доступа бывают трех видов:
read (чтение) write (запись) execute (выполнение)
Также каждый вид прав имеет цифровой аналог:
При наличии нескольких видов прав одновременно цифры суммируются.
Команды изменения прав группы, пользователя или доступа к файлу или каталогу:
chgrp — изменение принадлежности файла или каталога к определенной группе
chown — изменяет владельца файла или каталога
chmod — изменяет режим доступа к файлу или каталогу.
ls –l — узнать текущие атрибуты/права доступа,
id – определить текущего пользователя.
4. Представление прав доступа
Основные атрибуты прав доступа можно представить в виде двенадцати битов двоичного числа, равных 1, если атрибут установлен, и 0, если нет. Порядок битов в числе следующий:
t — это t-атрибут (sticky–бит), после чего следуют три тройки атрибутов доступа:
rU|wU|xU — права чтения (Read), записи (Write) и выполнения (eXecute) для владельца файла (User);
rG|wG|xG — права чтения (Read), записи (Write) и выполнения (eXecute) для группы файла (Group);
rO|wO|xO — права чтения (Read), записи (Write) и выполнения (eXecute) для всех остальных (Other).
Процессы с установленным битом sU выполняются с правами владельца. А с установленным битом sG – с правами группы.
В каталоге с установленным sticky–битом удалять файлы может только владелец или root. При том устанавливать этот бит может только root, а сбрасывать может владелец и root.
Например, команда ls -l выводит права доступа в таком формате:
—rw—rw—rw— Первая черточка — обычный файл, и 9 прав доступа — все могут читать и изменять.
drwx—— Каталог, полный доступ (чтение, изменение, выполнение) имеет только владелец файла.
—rw—r—— Обычный файл, владелец может читать и изменять, группа — читать, остальные — не имеют прав.
drwxr—xr— Каталог, владелец имеет полный доступ, группа — чтение и выполнение, остальные — только чтение.
drwxrwxrwt Каталог, все имеют полный доступ, однако, установлен sticky–бит, поэтому права записи в каталог для членов группы и для посторонних ограничены их собственными файлами, и только владелец имеет право изменять список файлов в каталоге, как ему вздумается. Такие каталоги называются разделяемыми, потому что предназначены они, как правило, для совместной работы всех пользователей в системе, обмена информацией и т. п. При установке атрибута «t» доступ на выполнение для посторонних («t» в строчке атрибутов стоит на месте последнего «x») не отменяется. Просто они так редко используются друг без друга, что ls выводит их в одном и том же месте. Если кому-нибудь придёт в голову организовать разделяемый каталог без доступа посторонним на использование, ls выведет на месте девятого атрибута не «t», а «T».
—rws—x—x Обычный файл, установлен атрибут SetUID. Как и в случае с t-атрибутом, ls выводит букву «s» вместо буквы «x» в тройке «для владельца». Точно так же, если соответствующего x-атрибута нет (что бывает редко), ls выведет «S» вместо «s».
—rwx—s—x Обычный файл, установлен атрибут SetGID. Утилита ls выводит SetGID в виде «s» вместо «x» во второй тройке атрибутов («для группы»). Замечания касательно «s», «S» и «x» действительны для SetGID так же, как и для SetUID.
Права доступа представляются также в двоичном и восьмеричном виде.
Примеры записи прав доступа в двоичной форме
все могут читать и изменять
владелец имеет все права, группа — чтение, остальные не имеют никаких прав
установлен t-атрибут, владелец имеет все права, группа — чтение, остальные не имеют никаких прав
установлен атрибут SetGID, владелец имеет все права, группа — чтение, остальные не имеют никаких прав
установлен атрибут SetUID, владелец имеет все права, группа — чтение, остальные не имеют никаких прав
Примеры записи прав доступа в восьмеричной форме
все могут читать и изменять
владелец имеет все права, группа — чтение, остальные не имеют никаких прав
установлен t-атрибут, владелец имеет все права, группа — чтение, остальные не имеют никаких прав
установлен атрибут SetGID, владелец имеет все права, группа — чтение, остальные не имеют никаких прав
установлен атрибут SetUID, владелец имеет все права, группа — чтение, остальные не имеют никаких прав
Особенности доступа к каталогам
Каталог — это особый тип файла. Его содержание — это список других файлов. Каталоги имеют те же «биты прав», что и остальные файлы. Однако то, что эти права означают может быть не таким простым для понимания.
Если каталог можно читать (r), то это означает, что разрешено только узнать список файлов, содержащихся в этом каталоге. Только список файлов, но не их свойства (размер, права доступа и др.).
Если каталог можно исполнять (x), то это означает, что в него можно заходить и просматривать содержимое файлов (доступ к которым разрешен для данной категории), узнавать свойства (атрибуты) файлов. Можно изменить содержимое файла (если его разрешено менять), но не имя файла.
Если каталог можно изменять (w), то это означает, что в нем можно изменять файлы, их имена, удалять их. Опасность! Это можно делать даже с файлами, доступ к которым запрещен для данной категории. Лечение! Вводят дополнительный t-бит. При его наличии пользователь может изменять только свои файлы.
— доступ к конкретному файлу также зависит от наличия доступа на исполнение к каталогам на протяжении всего пути;
— изменять существующие файлы можно, не имея доступа на запись в каталог, достаточно иметь доступ на запись самого файла.
Цель лабораторной работы
Ознакомиться с правами доступа в операционной системе Linux, понять структура прав доступа, а также освоить основные команды по обработке и управлению доступа.
Задача лабораторной работы
Изучить права доступа к файлам в Linux.
Используемое программное обеспечение
Для выполнения лабораторной работы используется установленный дистрибутив ОС Linux.
Задание на лабораторную работу
- Ознакомиться с командами Linux для управления доступом.
- Создать две группы с названием group1 и group2.
- Создать пять пользователей с именами user1, user2 … user5 и добавить их в группу согласно приведенной ниже таблице (Таблица 1).
- Авторизоваться за каждого пользователя и создать в домашнем каталоге структуру каталогов и файлов. Структура приведена на рисунке 1.
Рисунок 1 – Структура каталогов и файлов.
- Дать доступ для редактирования file2 второму пользователю.
- Дать доступ для редактирования file3 всем пользователям.
- Дать доступ для чтения и редактирования file4 первому и второму пользователю.
- Дать доступ для запуска test3 только первому пользователю.
- Запретить доступ для запуска test1 первому пользователю.
- Запретить доступ для чтения file5 третьему и пятому пользователю.
- Запретить доступ для запуска test2 всем пользователям.
- Запретить доступ для редактирования file7 третьему и четвертому пользователю, но разрешить всем остальным.
- Дать доступ для чтения и редактирования file1 пятому пользователю, всем остальным запретить.
- Дать доступ для чтения и редактирования file6 первому и второму пользователю, остальным запретить.
Порядок выполнения работы
- С помощью команды useradd создаем пользователей. С помощью команды usermod добавляем пользователей в группу. (Рисунок 2).
Рисунок 2 – Создание пользователей и добавление их в группу
Рисунок 3 – Создание каталогов
Рисунок 4 – Создание групп и добавление в них пользователей
Рисунок 5 – Создание файлов
Рисунок 6 – Вызов программы test1
Рисунок 7 – Компиляция программы
Рисунок 8 – Предоставление прав владельца пользователям
Рисунок 9 – Определение каталога в группу
Рисунок 10 – Изменение режима доступа к файлам
Вывод
В данной лабораторной работе были изучены права доступа в операционной системе Linux, а именно: структура прав доступа и основные команды по обработке и управлению правами доступа.