На вопрос уже дан ответ, поэтому я просто сделаю краткое замечание: в своем вопросе вы используете термины «папка» и «каталог» взаимозаменяемо. Эти два очень разные, и, по моему опыту, 99% всех проблем с разрешениями Unix связаны с их смешением. Помните: в Unix есть каталоги, а не папки.
РЕДАКТИРОВАТЬ: папка представляет собой два склеенных вместе кусочка картона, которые содержат файлов. Итак, папка - это контейнер, фактически она содержит файлы, которые она содержит. Таким образом, очевидно, что файл может находиться только в одном контейнере за раз. Чтобы переименовать файл, вам нужен не только доступ к папке, но и доступ к файлу. То же самое, чтобы удалить файл.
Каталог, OTOH, сам файл. [Фактически именно так были реализованы каталоги в старых файловых системах Unix: просто обычные файлы со специальным флагом, вы даже можете открыть их в редакторе и изменить их.] Он содержит список сопоставления от имени к месту (например, телефонный справочник или большой склад). [В Unix эти сопоставления называются links или hardlinks .] Поскольку каталог содержит только имена файлов, а не сами файлы, один и тот же файл может присутствовать в нескольких каталогах под разными именами. Чтобы изменить имя файла (или, точнее, изменить a имя файла, поскольку он может иметь более одного файла), вам нужен только доступ на запись в каталог, а не в файл. То же самое, чтобы удалить файл. Ну, на самом деле, вы не можете удалить файл, вы можете удалить только запись в каталоге - в других каталогах могут быть другие записи, указывающие на этот файл. [Вот почему функция syscall / library для удаления файла называется unlink
, а не delete
: потому что вы просто удаляете ссылку, а не сам файл; файл автоматически «собирается», если на него больше нет ссылок, указывающих на него.]
Вот почему я считаю, что метафора папок для каталогов Unix неверна и даже опасна. Секретный вопрос номер один в одном из списков рассылки Unix, на котором я нахожусь: «Почему А может удалять файлы Б, даже если у него нет доступа к ним для записи?» и ответ таков: ему нужен только доступ для записи в каталог. Таким образом, из-за метафоры папок люди думают, что их файлы безопасны, даже если это не так. С помощью метафоры каталога было бы намного проще объяснить, что происходит: если я хочу удалить вас из моей телефонной книги, мне не нужно выслеживать вас и убивать, мне просто нужен карандаш!