rm: не удается удалить каталог /: в доступе отказано

17

Я сделал каталог под названием "Шади" и установил для него это разрешение

sinoosh@ubuntu:/home$ ls -ld shadi
drwxr-xrwx 2 root root 4096 Jul  1 01:58 shadi

В этой ситуации у меня есть разрешения «другие», но почему я не могу удалить его?

sinoosh@ubuntu:/home$ rm -r shadi/
rm: cannot remove ‘shadi/’: Permission denied
Sinoosh
источник

Ответы:

25

Здесь проблема в том, что у вас нет разрешения «w» для /homeкаталога. При удалении файла обратите внимание, что вы не пишете в этот файл, но изменяете содержимое каталога, в котором находится файл, поэтому наличие разрешения «w» для каталога является обязательным, если вы хотите удалить какой-либо файл из каталога.

снимок экрана терминала "ls -ld / home"

Если я нахожусь в каталоге с разрешением «w», я могу удалить любой из его файлов, не беспокоясь о самом разрешении файла. Обратите внимание, что мой нынешний каталог /home/rohithимеет разрешение «w», и поэтому я могу удалить любой из его файлов независимо от прав доступа к файлу.

Терминальный скриншот удаления / home / rohith / shadi

Если тот же файл создается в каталоге / home, который не имеет разрешения «w», я получаю тот же вывод, что и ваш! :)

Терминальный скриншот попытки удалить / home / shadi

rohith
источник
8

Это происходит потому, что вы не являетесь владельцем каталога, он принадлежит root и группе root. Таким образом, чтобы удалить его, вы можете либо изменить владельца, а затем удалить его (здесь вы повышаете свои права и становитесь «root» для получения права собственности):

sudo chown $USER:$USER ./shadi
rm -r ./shadi

Или вы пропускаете переход в собственность и делаете sudo rmправа, чтобы повысить свои права и стать «root» для удаления:

sudo rm -r ./shadi
Videonauth
источник
значит просто владельцы могут удалять файлы?
Sinoosh
Да, или вам нужно повысить свои права с помощью sudoкоманды. тогда будет запрошен ваш пароль, и вы станете суперпользователем для следующей команды.
Видеонавт
Теперь, если файл «shadi» был файлом, я могу удалить его с помощью пользователя «sinoosh». Для него не требуется «sudo». Это не делает сцену для меня, почему он не работает с каталогом
Sinoosh
6

Попробуй это:

sudo rm -r ./shadi

Права доступа показывают владельца root и группу root, поэтому вы должны использовать sudo.

Бруни
источник
1
Да, эта команда в порядке, но моя проблема в том, почему rm не работает с этими разрешениями. У меня есть полные разрешения для этого каталога в другом поле
Sinoosh
«У меня есть полные разрешения для этого каталога» Нет, у вас нет. «другое поле» шади - это не «другие».
Rinzwind
но «sinoosh» принадлежит другим, и он исполняет «rm -r shadi»
Sinoosh
0

Это разные аккаунты.

Как бы вы ожидали безопасности от своей учетной записи, если бы у всех было разрешение на удаление вашей домашней директории?

У вас нет wразрешения на удаление чьего-либо домашнего каталога по умолчанию, кроме случаев, когда chmod +wэто так.

Вот различные разрешения и пример ( -rwxr-x---/ rwxrx):

+ - + - + - + - +
| + | У | г | о |
+ - + - + - + - +
| г | 1 | 1 | 1 |
+ - + - + - + - +
| ш | 2 | 2 | 2 |
+ - + - + - + - +
| х | 4 | 4 | 4 |
+ - + - + - + - +
| * | 7 | 5 | 0 |
+ - + - + - + - +
Это выглядит следующим образом : 1 + 2 + 4 = 7, 1 + 4 = 5, 0 = 0, так 750, т.е. система идеально разрешение. Владелец ( uв этом случае) может читать, записывать и выполнять файл, группа владельца ( gв этом случае) может читать и выполнять, а любой другой ( oв этом случае) ничего не может сделать. Это легендарный
u: текущий пользователь (пользователь)
g: группы текущего пользователя (Группы)
o: не текущие группы пользователей (Другие)
r: разрешение на чтение (чтение)
w: разрешение на запись (запись)
x: разрешение на выполнение (X-ecute)
,

EKons
источник