Linux - не может удалить собственный файл с разрешениями 777


29

У меня есть пара файлов, которые я не могу удалить с помощью rf -Rfкоманды. Я являюсь владельцем этого файла, и группа, назначенная этим файлам, также является группой, в которую входит мой пользователь. Что еще более странно, так это то, что я могу редактировать их содержимое и изменять разрешения для них, но я не могу переместить или удали их.

ls -al
total 12
dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .
drwxr-xr-x 3 rayell pg1083760 4096 2011-09-02 04:33 ..
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 default.settings.php
drwxrwxrwx 2 rayell pg1083760 4096 2011-09-02 04:33 files
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 settings.php


rm -Rf *
rm: cannot remove `default.settings.php': Permission denied
rm: cannot remove directory `files': Permission denied
rm: cannot remove `settings.php': Permission denied

Кто-нибудь может сказать мне, что происходит?


5
В общем, рассмотрите возможность использования rm -rf DIRECTORY_NAME, а не "*". Это избавит вас от этого
случая,

На самом деле я попробовал это, это были только те 3 файла, которые я не мог удалить, поэтому я упростил процедуру немного для целей этого поста.
RaYell

Не забудьте команду lsattr и chattr ...

Ответы:


61

Чтобы удалить один файл, вам нужно разрешение на запись в каталог, содержащий этот файл.

Здесь права доступа dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .Итак, никто (кроме root) не может удалять файлы в этом каталоге. Владелец должен использовать в chmodпервую очередь.

-
1. Есть довольно веские причины для этого. «Удаляя» файл с помощью rm, вы фактически пытаетесь отсоединить его от каталога (копии с жесткими ссылками не будут удалены).


1

У меня была та же проблема, и chmodодин не справился. Сначала мне пришлось сменить владельца (пользователя и группу) файлов, которые я хотел удалить.

sudo chown -hR root:admin dir_to_delete

Объяснение:

  • sudo: убедитесь, что у вас есть соответствующие права
  • chown: Команда Linux для смены владельца файла
  • -hR: изменить владельца каталога и всех его подкаталогов. Я нашел это здесь .
  • root: имя нового пользователя
  • admin: название новой группы

Я уже изменил модификаторы на 777; Я не знаю, было ли это необходимо или нет.


Права доступа к файлам в каталоге не имеют значения, имеет значение только разрешение на запись в самом каталоге. Вероятно, раньше chownвы не были ни владельцем каталога, ни членом группы, владеющей каталогом.
sgnsajgon

1

Другой возможный вопрос - это атрибут

lsattr file

Эта команда покажет вам атрибут файла, и файл с атрибутом «i» не может быть изменен (и может быть удален)

поэтому проверьте атрибут вашего файла и удалите атрибут «i», если атрибут установлен

chattr -i file

2
Вопрос показывает, что права доступа к каталогу не позволяют писать. Не нужно смотреть дальше.
Тоби Спейт

0

Причина в том, что родительский каталог имеет chmod 705или что-то подобное. Вы можете chmodродительский каталог с помощью следующей команды:

chmod -R 777 directory_name

После этого вы можете удалить этот каталог и содержащиеся в нем файлы.


4
Пожалуйста, не одобряйте создание каталогов, доступных для записи всем . Это не хороший совет.
Тоби Спейт

+1 - Согласитесь, не следуйте этому совету, это удивительно, как это намазано по всему интернету ... Уровень незащищенности, вызванный людьми, выступающими за это, невероятен ...
Андре Фигейра
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.