Linux - не может удалить собственный файл с разрешениями 777
У меня есть пара файлов, которые я не могу удалить, используя 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 ответов
Чтобы удалить один файл, вам нужно разрешение на запись в каталог, содержащий этот файл.
Здесь разрешения dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .
Так что никто (кроме root
) может удалять файлы внутри этого каталога. Владелец должен использовать chmod
первый.
-
1. Есть довольно веские причины для этого. "Удаляя" файл с rm
, вы на самом деле пытаетесь отсоединить его от каталога (жесткие ссылки не будут удалены).
Другой возможный вопрос - это атрибут
lsattr file
Эта команда покажет вам атрибут файла, и файл с атрибутом "i" не может быть изменен (и может быть удален)
поэтому проверьте атрибут вашего файла и удалите атрибут "i", если атрибут установлен
chattr -i file
Причина в том, что родительский каталог имеет chmod 705
или что-то типа того. Вы можете chmod
родительский каталог с помощью следующей команды:
chmod -R 777 directory_name
После этого вы можете удалить этот каталог и содержащиеся в нем файлы.
У меня была такая же проблема, и chmod
один не справился. Сначала мне пришлось сменить владельца (пользователя и группу) файлов, которые я хотел удалить.
sudo chown -hR root:admin dir_to_delete
Объяснение:
sudo
: убедитесь, что у вас есть соответствующие праваchown
: Команда Linux для смены владельца файла-hR
: изменить владельца каталога и всех его подкаталогов. Я нашел это здесь.root
: имя нового пользователяadmin
: название новой группы
Я уже изменил модификаторы на 777; Я не знаю, было ли это необходимо или нет.
Просто ради знаний: я решил это, используя sudo, редактируя файл sudoers:
Cmnd_Alias MOVE = /bin/mv, /bin/rm
user ALL=(postgres) NOPASSWD:MOVE
В процедуре пользователь выполняет:sudo -u postgres rm /tmp/test.file