1

Ниже приведены результаты вызовов ls -l для файла и его (родительского) каталога. В каком из следующих случаев пользователь (student1) может удалить файл:

а.

---------- 1 student1 student1    0 Feb 10 20:47 file1
d-wx------ 2 student1 student1 4096 Feb 10 20:47 directory1

б.

-rwx------ 1 student1 student1    0 Feb 10 20:47 file1
drw------- 2 student1 student1 4096 Feb 10 20:47 directory1

с.

-rwxrwx--- 1 student1 student1    0 Feb 10 20:47 file1
dr-x------ 2 student1 student1 4096 Feb 10 20:47 directory1

д.

-rwxrwx--- 1 student1 student1    0 Feb 10 20:47 file1
dr-xrwx--- 2 student1 student1 4096 Feb 10 20:47 directory1

Может кто-нибудь объяснить, почему правильный ответ (а)? Насколько я знаю, при удалении я должен смотреть на пронумерования в родительском каталоге, но я не могу понять, в чем разница между a, b, c и d.

1 ответ1

3

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

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

В стандартном Linux владелец всегда может удалить свои собственные файлы. Это довольно логичное продолжение того факта, что владелец может изменять права доступа к файлу, поэтому даже если бы он не смог удалить его изначально из-за прав доступа к файлу, он мог бы просто дать себе такое разрешение.

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

Случай (а) - это единственный случай, когда пользователь имеет право на запись в каталог, и, следовательно, единственный случай, когда пользователь может удалять файлы в этом каталоге.

В случае (b) вы не можете спуститься в каталог (отсутствие разрешения x ) и, таким образом, вообще ничего не можете сделать с его содержимым.

В случае (c) у вас нет прав на запись в каталог, и, следовательно, вы не можете изменить содержимое каталога.

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

Рассмотрим (несколько неочевидный) способ, которым обычные права доступа к файлам (чтение / запись / выполнение) отображаются в каталогах, и что они означают:

  • r Разрешение на каталог означает, что вы можете перечислить файлы, потому что это позволяет читать каталог-файл
  • Разрешение w на каталог означает, что вы можете добавлять, редактировать и удалять записи каталога, поскольку оно позволяет записывать в каталог-файл
  • x разрешение на каталоге означает , что вы можете спуститься в каталог, что позволяет получить доступ к записи каталога при условии, что вы знаете его имя, потому что причины (и там нужно быть каким - то образом выразить способность снизойти в каталог)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .