Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОС Unix / Лабораторная работа 3

.docx
Скачиваний:
4
Добавлен:
28.11.2023
Размер:
26.2 Кб
Скачать

Лабораторная работа №3. Разграничение прав доступа в ОС UNIX.

Таблица 1 – Используемые команды

Команда

Описание

chmod

изменение прав доступа к объекту

chown

изменение владельца объекта

chgrp

изменение группы-владельца объекта

umask

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

getfacl

просмотр списка контроля доступа

setfacl

изменение списка контроля доступа

Как многопользовательская операционная система, ОС Linux содержит механизм разграничения доступа к данным, позволяющий как защитить данные одного пользователя от нежелательного вмешательства других, так и разрешить другим доступ к этим данным для совместной работы. 

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

Пользователь может быть членом нескольких групп, равно как и не-сколько пользователей может быть членами одной и той же группы.

При создании объектов файловой системы — файлов, каталогов и т. п. — каждому в обязательном порядке приписывается UID — идентификатор пользователя-владельца файла, GID — идентификатор группы, которой принадлежит файл, тип объекта и набор т. н. атрибутов, а также некоторую дополнительную информацию. 

Атрибуты определяют, кто и что с файлом имеет право делать.

Утилита id выводит входное имя пользователя и соответствующий ему UID, а также группу по умолчанию и полный список групп, членом которых он является.

Механизм разграничения прав доступа позволяет ограничивать доступ пользователей к объектам системы – каталогам и файлам. Права доступа подразделяются на три типа: чтение (read), запись (write) и выполнение (execute). Эти типы прав доступа могут быть предоставлены трем классам пользователей: пользователю-владельцу файла (u), выбранной группе пользователей (g) и всем остальным пользователям (o). Владелец файла обычно является членом группы, пользователям которой выдаются права доступа.

Существует два формата записи прав доступа: символический, который мы видим, работая с командой ls -l (rwxrwxrwx или r-x------) и восьмеричный (777 или 002).

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

Команда getfacl используется для просмотра списка контроля доступа для файла. Если списки контроля доступа не заданы, но команда выведет на экран стандартные права доступа UNIX для выбранного файла.

$ getfacl file1.txt

# file: file1.txt

# owner: user1

# group: users

user:: rwgroup::rwother::---

С помощью команды setfacl можно добавить списки контроля доступа для файла. Например, чтобы разрешить членам группы developers читать файл file1.txt, пользователю user2 – читать и обновлять файл, а пользователю user3 – только читать файл, можно воспользоваться следующими командами:

$ setfacl -m g:developers:rw file1.txt

$ setfacl -m u:user2:rw file1.txt

$ setfacl -m u:user3:r file1.txt

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

Списки контроля доступа по умолчанию задаются так же, как и стандартные, но с добавлением в начало четвертого поля слова default (которое можно сократить до "d").

В каталоге с установленным 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.) права доступа представляются также в двоичном и восьмеричном виде.

    Особенности доступа к каталогам

 Каталог — это особый тип файла. Его содержание — это список других файлов. Каталоги имеют те же «биты прав», что и остальные файлы. Однако то, что эти права означают может быть не таким простым для понимания. 

Если каталог можно читать (r), то это означает, что разрешено только узнать список файлов, содержащихся в этом каталоге. Только список файлов, но не их свойства (размер, права доступа и др.). 

Если каталог можно исполнять (x), то это означает, что в него можно заходить и просматривать содержимое файлов (доступ к которым разрешен для данной категории), узнавать свойства (атрибуты) файлов. Можно изменить содержимое файла (если его разрешено менять), но не имя файла.

Если каталог можно изменять (w), то это означает, что в нем можно изменять файлы, их имена, удалять их. 

Задания:

  1. Создайте в своем домашнем каталоге подкаталог labs.

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

$ touch labs/lab{1,2,3,4}.{draft,final}.{txt,pdf}

Если вы правильно ввели команду, у вас появится следующие файлы:

$ ls labs/

lab1.draft.pdf lab2.draft.pdf lab3.draft.pdf lab4.draft.pdf

lab1.draft.txt lab2.draft.txt lab3.draft.txt lab4.draft.txt

lab1.final.pdf lab2.final.pdf lab3.final.pdf lab4.final.pdf

lab1.final.txt lab2.final.txt lab3.final.txt lab4.final.txt

  1. Задайте права доступа к вашему домашнему каталогу так, чтобы другие пользователи могли получить доступ к подкаталогу labs, но не могли просматривать список файлов в домашнем каталоге.

  2. Создайте каталог ~/labs/draft и выдайте вашей группе права доступа к этому каталогу так, чтобы любой мог просмотреть список содержимого каталога, но только члены вашей группы могли создать новые файлы. Переместите все обычные файлы, которые содержат слово «draft» в своем названии, в ваш вновь созданный каталог и замените группу-владельца файла на вашу группу.

  3. Создайте каталог ~/labs/final. Установите такие права доступа, чтобы только вы имели доступ к каталогу на запись. Вы должны иметь полный доступ к этому каталогу, а все другие члены вашей группы должны иметь возможность просматривать файлы этого каталога. Переместите все обычные файлы, которые содержат в своем названии слово «final», во вновь созданный каталог.

  4. Работа над первой лабораторной работой закончилась, поэтому позаботьтесь о том, чтобы вы случайно не удалили файл lab1.final.pdf и lab1.final.txt из каталога final.

  5. Вы заинтересованы в том, чтобы получать от любых людей подсказки по выполнению работ, но вы хотели бы, чтобы этот процесс был анонимным. Создайте каталог ~/labs/submissions и установите такие прав доступа, чтобы любой человек мог создавать новые файлы, но только вы могли видеть список содержимого каталога. Проверьте, что все работает, и создайте новый файл в вашем каталоге с именем ~/labs/submissions/suggestion.txt.

  6. Создайте подкаталог shared в вашем домашнем каталоге. Создайте файл doc1.txt в новом каталоге. Проверьте стандартные права доступа к файлу. Используя списки контроля доступа, дайте другому пользователю права на чтение созданного файла.

  7. В чем может быть причина, если ему не удалось открыть файл?

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