ПР 6. Управление правами доступа
Цель работы
Ознакомиться с порядком разграничения прав в ОС Linux и получить начальные навыки использования команд управления правами доступа.
Указания к выполнению
Необходимость разграничения прав доступа к ресурсам операционной системы обусловлена ее многозадачностью и поддержкой многопользовательского режим. Гибкое управление правами позволяет повысить безопасность и надежность системы, а также обеспечить защиту конфиденциальной информации.
Концепция разделения прав доступа в UNIX-подобных системах (в том числе Astra Linux) основана на наборе атрибутов, присущих каждому файлу и определяющих его принадлежность и разрешенные действия.
Отношение принадлежности файла определено для следующих категорий:
- создатель/владелец файла (user) – пользователь, создавший файл или ставший его владельцем в процессе передачи прав;
- группа (group) – системная группа, в состав которой входит создатель/владелец файла;
- прочие (other) – все остальные пользователи.
Разрешения распространяются на следующие файловые операции: чтение (read), изменение (write), исполнение (execute). Семантика этих операций имеет различия применительно к обычными (regular) файлам и директориям. Эти различия приведены в таблице 1.
Таблица 1 – Семантика файловых операций
Операция | Файлы | Каталоги |
Чтение (read) | Просмотр содержимого файла (например, текста) в соответствующей программе и возможность его копирования | Обзор списка файлов и возможность копирования каталога (в общем случае, вместе со всем содержимым) |
Изменение (write) | Редактирование содержимого файла и его копирование, но не удаление или переименование/перемещение | Обеспечивает возможность записи и удаления файлов |
Исполнение (execute) | Разрешает запуск программ и сценариев оболочки | Разрешает переход в каталог и перемещение по нему |
Атрибуты файла могут быть представлены в символьном или числовом виде.
Символьное представление атрибутов - это строка вида rwxrwxrwx, где каждая тройка символов определяет права на чтение (r), запись (w) и исполнение (x) для соответстующих пользователей (первая тройка — для владельца (user), вторая — для группы (group), третья — для прочих (other). Символ «-» на месте атрибута означает, что операция не разрешена, например так: rw‑r‑‑r‑‑ (владелец может читать и изменять файл, все остальные — только читать).
Несколько примеров отображения списка файлов с правами доступа, представленными в символьном виде:
drwxr-xr-x 4 user users 4096 Фев 26 00:05 public_html -rw-r--r-- 1 user users 1088 Фев 20 10:18 readme.txt drwxr-xr-x 4 user users 4096 Фев 27 23:41 scrapbook -rw------- 1 root root 0 Июн 2 2007 session_mm_cli0.sem
Обратите внимание на первые символы в записи прав доступа в приведенном примере. Первый символ d указывает, что файл является каталогом. Признаком специального символьного и блочного устройств являются символы с и b, а для каналов (pipes) соответственно p. (см. файловая система)
Числовое представление прав доступа — это трехзначное число, каждая цифра которого определяет (слева направо) права для владельца, группы и прочих. Разрешения определяются как сумма цифр 4 (чтение), 2 (запись) и 1 (исполнение). Таким образом, файл example.txt, создателем которого является user1 и разрешенный для чтения и изменения членам группы users и только для чтения всем прочим, будет иметь cледующие атрибуты:
в символьном виде: rw‑rw‑r‑‑
в числовом виде: 664 (4+2+0 4+2+0 4+0+0).
Наряду с рассмотренными основными правами система поддерживает т. н. расширенные права, применяемые в специальных случаях. Сюда относятся атрибуты SUID, SGID, sticky bit и еще ряд опций, которые не рассматриваются в этой практической работе.
Задания
- Выполнить вход в систему с вашей учетной записью.
- Ознакомиться со справочной информацией о командах chmod, chown, chgrp, stat и install.
- В домашнем каталоге создать подкаталог accessrights и создать в нем текстовые файлы file1.txt и file2.txt.
- Вывести рекурсивно расширенную информацию о файлах в текущем каталоге, обратить внимание на права доступа к каталогу accessrights и его файлам.
- Переместиться в каталог accessrights.
- Записать строку «Hello, world!» в файл file1.txt и вывести этот файл на экран.
- Сбросить все права (ugo-rwx) на файл file1.txt. Вывести его содержимое на экран.
- Установить права доступа к файлу file1.txt в значение 044 и и вывести файл на экран.
- Разрешить для создателя/владельца чтение и изменение файла file1.txt.
- Записать строку «cat file1.txt» в file2.txt и вывести file2.txt на экран.
- Выполнить файл file2.txt (пользовательские команды и скрипты запускаются так: ./имякомандыилискрипта, т. е. нужно ввести ./file2.txt и нажать клавишу «Ввод»).
- Разрешить для всех права на исполнение для файла file2.txt и повторить попытку запустить этот файл как команду.
- Вернуться в домашний каталог и вывести расширенную информацию о файлах в каталоге accessrights.
- Установить права доступа 644 для каталога accessrights и вывести расширенную информацию о файлах в этом каталоге.
- Установить права доступа 111 для каталога accessrights и вывести расширенную информацию о файлах в этом каталоге.
- Вывести на экран файл accessrights/file1.txt.
- Выполнить файл accessrights/file2.txt.
- Скопировать accessrights/file1.txt в файл accessrights/file3.txt с правами на исполнение для всех и выполнить созданный файл.
- Рекурсивно удалить каталог accessrights.
- Завершить сеанс.
Контрольные вопросы
Примечание: во всех вопросах предполагается, что текущий пользователь является создателем/владельцем файлов и каталогов и имеет потенциальную возможность управлять правами доступа.
- Какие права доступа по умолчанию устанавливаются на вновь созданный файл? (указать в символьном и числовом представлении)
- Что можно сказать о файле, если информация о его правах доступа отображается в виде «drwxr-x--x»?
- Как изменятся права доступа к файлу после выполнения команды chmod 664 somefile.txt?
- Что будут означать права доступа ugo-x для некоторого каталога?
- Каталог test имеет права --x--x--x. Что выведет команда dir test?
- В каталоге test с правами 111 есть файл somefile.txt. Можно ли выполнить запись в этот файл?
- Как установить определенные права доступа на все без исключения файлы в заданном каталоге?
- Есть файл script.sh. Как сделать этот файл исполнимым для всех, кроме его создателя/владельца?
- Какой набор прав доступа может защитить обычный файл от удаления?
- Имеется некоторый скрипт script.sh с правами ugo+x,go-rw. Какой может быть смысл в такой комбинации прав доступа?
CC-BY-CA Анатольев А.Г., 08.06.2022