У каталога те же три буквы, но действия другие. Каталог — это список имён файлов, и права относятся к этому списку.
Откроешь ли ты файл, решают не только его собственные права: сначала своё слово говорит каталог, в котором файл лежит.
В /srv/permissions-lab лежит каталог archive со строкой прав drw-------: тебе, владельцу, — rw-, без x. Внутри — note.txt, который читать разрешено всем.
Каталог без прохода
Ты в /srv/permissions-lab. Посмотри строку каталога archive, список его имён и попробуй прочитать archive/note.txt.
Сначала предположи
На archive у тебя rw-, у note.txt чтение открыто всем. Что напечатает cat archive/note.txt?
Теперь начни упражнение, выполни команду и сверь прогноз с выводом.
Для каталога r — прочитать список имён, x — пройти через каталог к файлу по имени, w — добавить, удалить или переименовать имя. У archive есть r, поэтому ls напечатала имя. Нет x — и cat не прошла к файлу, хотя права самого note.txt чтение разрешают.
| Буква | У файла | У каталога |
|---|---|---|
r |
читать содержимое | читать список имён |
w |
изменять содержимое | создавать, удалять, переименовывать имена (вместе с x) |
x |
запускать как программу | проходить к файлам по имени |
Удаление стирает имя из списка каталога. Поэтому удалить файл можно и без w у самого файла, а решают это права каталога, где он лежит.
В твоём каталоге ~/inbox (drwxrwxr-x, владелец — ты) лежит old.txt с правами -r--r--r--, владелец — root. Что сделает rm -f ~/inbox/old.txt?
-
rmубирает имя файла из каталога целиком. Чтобы стереть содержимое, нуженwу самого файла, а его нет. -
Удаление стирает имя из списка
~/inbox, аwиxна этом каталоге у тебя есть. Права самого файла удаление не решают. -
Владелец файла удаление не решает — решают права каталога, где лежит имя. Каталог твой,
wиxна нём есть.
Удаление меняет список имён каталога, поэтому его разрешают w и x на ~/inbox. Права самого old.txt влияют на одно: без -f rm сначала спросит подтверждение, потому что файл защищён от записи.