Учебно-методические материалы для студентов кафедры АСОИУ

ПР 6. Управление правами доступа

Цель работы

Ознакомиться с порядком разграничения прав в ОС Linux и получить начальные навыки использования команд управления правами доступа.

Указания к выполнению

Необходимость разграничения прав доступа к ресурсам операционной системы обусловлена ее многозадачностью и поддержкой многопользовательского режим. Гибкое управление правами позволяет повысить безопасность и надежность системы, а также обеспечить защиту конфиденциальной информации.

Концепция разделения прав доступа в UNIX-подобных системах (в том числе Astra Linux) основана на наборе атрибутов, присущих каждому файлу и определяющих его принадлежность и разрешенные действия.

Отношение принадлежности файла определено для следующих категорий:

Разрешения распространяются на следующие файловые операции: чтение (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 и еще ряд опций, которые не рассматриваются в этой практической работе.

Задания

  1. Выполнить вход в систему с вашей учетной записью.
  2. Ознакомиться со справочной информацией о командах chmod, chown, chgrp, stat и install.
  3. В домашнем каталоге создать подкаталог accessrights и создать в нем текстовые файлы file1.txt и file2.txt.
  4. Вывести рекурсивно расширенную информацию о файлах в текущем каталоге, обратить внимание на права доступа к каталогу accessrights и его файлам.
  5. Переместиться в каталог accessrights.
  6. Записать строку «Hello, world!» в файл file1.txt и вывести этот файл на экран.
  7. Сбросить все права (ugo-rwx) на файл file1.txt. Вывести его содержимое на экран.
  8. Установить права доступа к файлу file1.txt в значение 044 и и вывести файл на экран.
  9. Разрешить для создателя/владельца чтение и изменение файла file1.txt.
  10. Записать строку «cat file1.txt» в file2.txt и вывести file2.txt на экран.
  11. Выполнить файл file2.txt (пользовательские команды и скрипты запускаются так: ./имякомандыилискрипта, т. е. нужно ввести ./file2.txt и нажать клавишу «Ввод»).
  12. Разрешить для всех права на исполнение для файла file2.txt и повторить попытку запустить этот файл как команду.
  13. Вернуться в домашний каталог и вывести расширенную информацию о файлах в каталоге accessrights.
  14. Установить права доступа 644 для каталога accessrights и вывести расширенную информацию о файлах в этом каталоге.
  15. Установить права доступа 111 для каталога accessrights и вывести расширенную информацию о файлах в этом каталоге.
  16. Вывести на экран файл accessrights/file1.txt.
  17. Выполнить файл accessrights/file2.txt.
  18. Скопировать accessrights/file1.txt в файл accessrights/file3.txt с правами на исполнение для всех и выполнить созданный файл.
  19. Рекурсивно удалить каталог accessrights.
  20. Завершить сеанс.

Контрольные вопросы

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

  1. Какие права доступа по умолчанию устанавливаются на вновь созданный файл? (указать в символьном и числовом представлении)
  2. Что можно сказать о файле, если информация о его правах доступа отображается в виде «drwxr-x--x»?
  3. Как изменятся права доступа к файлу после выполнения команды chmod 664 somefile.txt?
  4. Что будут означать права доступа ugo-x для некоторого каталога?
  5. Каталог test имеет права --x--x--x. Что выведет команда dir test?
  6. В каталоге test с правами 111 есть файл somefile.txt. Можно ли выполнить запись в этот файл?
  7. Как установить определенные права доступа на все без исключения файлы в заданном каталоге?
  8. Есть файл script.sh. Как сделать этот файл исполнимым для всех, кроме его создателя/владельца?
  9. Какой набор прав доступа может защитить обычный файл от удаления?
  10. Имеется некоторый скрипт script.sh с правами ugo+x,go-rw. Какой может быть смысл в такой комбинации прав доступа?

CC-BY-CA Анатольев А.Г., 08.06.2022