Права доступа к каталогам
Так же как и с обычными файлами, с каталогами связаны права доступа, определяющие возможность доступа к ним различных пользователей.
Права доступа к каталогам организованы точно так же, как и права доступа к обычным файлам, разбиты на три группы битов 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 |
На уровне командного интерпретатора связанные с каталогами права доступа можно вывести при помощи команды 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 .
Помните, что имя .
(точка) в конце листинга обозначает текущий каталог.