Системное программирование в UNIX средствами Free Pascal

       

Права доступа к каталогам


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

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

Тем не менее, хотя эти права доступа представлены так же, как и у обычных файлов, интерпретируются они по-другому:

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

–        право доступа к каталогу на запись позволяет пользователю создавать в каталоге новые файлы и удалять существующие. И снова это не дает пользователю права изменять содержимое существующих файлов, если это не разрешено правами доступа к отдельным файлам. Вместе с тем при этом можно удалить существующий файл и создать новый с тем же самым именем, и это, по сути, означает то же самое, что и изменение содержимого исходного файла;

–        право доступа к каталогу на выполнение, называемое также правом выполнения, или правом прохождения, поиска

(search permission), позволяет пользователю перейти в каталог при помощи команды cd или системного вызова chdir в программе (который будет рассмотрен позже). Кроме этого, чтобы иметь возможность открыть файл или выполнить программу, пользователь должен иметь право доступа на выполнение для всех ведущих к файлу каталогов, входящих в абсолютный путь файла;

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










Каталог ben


123


.


\0






247


.


.


\0





260


b


o


o


k


\0



401


m


e


m


o


s


\0


Каталог book


260


.


\0






123


.


.


\0





566


c


h


a


p


1


\0


567


c


h


a


p


2


\0


590


c


h


a


p


3


\0


Каталог memos


401


.


\0






123


.


.


\0





800


k


h


\0





810


k


d


\0





077


m


w


\0




Рис. 4.5. Каталоги ben, book и memos

На уровне командного интерпретатора связанные с каталогами права доступа можно вывести при помощи команды ls с параметром -l. Подкаталоги будут обозначаться буквой d

в первой позиции, например:

$ ls -l

total 168

-rw-r-----    1 ben other 39846 Oct 12 21:21 dir_t

drwxr-x---    2 ben other 32    Oct 12 22:02 expenses

-rw-r-----    1 ben other 46245 Oct 13 10:34 new

-rw-r-----    1 ben other 3789  Sep 2  18:40 pwd_text

-rw-r-----    1 ben other 1310  Sep 13 10:38 test.с

Здесь строка, описывающая подкаталог expenses, помечена буквой d

в начале строки. Видно, что владелец этого каталога (пользователь ben) имеет права на чтение, запись и выполнение (поиск), пользователи группы файла (называющейся other) имеют права на чтение и выполнение (переход в каталог), а для всех остальных пользователей доступ полностью запрещен.

Если требуется получить информацию о текущем каталоге, можно задать в команде ls

кроме параметра -l еще и параметр -d, например:

$ ls -ld

drwxr-x---  3 ben other 128 Oct 12 22:02 .

Помните, что имя .

(точка) в конце листинга обозначает текущий каталог.


Содержание раздела