27

У меня есть пара файлов, которые я не могу удалить с помощью команды 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

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

4 ответа4

59

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

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

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

1

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

lsattr file

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

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

chattr -i file
0

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

chmod -R 777 directory_name

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

0

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

sudo chown -hR root:admin dir_to_delete

Объяснение:

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

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

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