
Когда я создаю каталог как пользователь root с разрешением 777, то я могу удалить его, когда я вхожу в систему как пользователь по умолчанию, но когда я вхожу как пользователь a
или b
, я не могу удалить его. Показывается, что разрешение отклонено.
У меня вопрос: почему мой пользователь по умолчанию может удалить папку, созданную пользователем root, а другие пользователи не могут, хотя у всех у них есть права 777.
решение1
Если у пользователя есть разрешения на запись и выполнение в каталоге, он может удалить любой файл или каталог в нем, независимо от владельцев. Это так, потому что удаление файла или подкаталога из каталога является изменением каталога, а не удаляемой вещи.
Пример: я создаю каталог, владельцем которого является пользователь root, в каталоге, владельцем которого я являюсь, а затем удаляю его.
$ sudo mkdir directory
$ ls -l
total 4
drwxr-xr-x 2 root wheel 512 Nov 25 11:11 directory
$ rmdir directory
$ ls -l
(нет выходных данных)
Теперь, если подкаталогсодержит файлы, то права доступа к этому каталогу становятся более интересными:
$ sudo mkdir directory
$ sudo touch directory/file
$ rm -rf directory
rm: directory/file: Permission denied
rm: directory: Directory not empty
Здесь я не могу удалить подкаталог, поскольку у меня нет прав на удаление файла, который находится внутри него.
Но вы говорите, что разрешения установлены на 777
, а это значит, что любой может удалить файлы внутри него:
$ sudo chmod 777 directory
$ rm -rf directory
(Нет ошибки)
Другой пользователь в моей системе все равно не сможет этого сделать, поскольку у него нет прав на запись в каталоге, где я работаю, хотя онмогвсе равно удалитьсодержаниеподкаталога, принадлежащего пользователю root, если этот каталог был им доступен (пользователям потребуются разрешения на выполнение для каталога ивсе родительские каталоги).