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, а не "*". Це вбереже вас від того часу, коли ви подумаєте себе в каталозі / some / where / safe, але замість цього
будете

Насправді я спробував це, я просто не міг видалити ці 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
Питання показує, що це права доступу до каталогу не дозволяють писати. Не потрібно шукати далі.
Toby Speight

0

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

chmod -R 777 directory_name

Після цього ви можете видалити цей каталог та файли, які він містить.


4
Будь ласка , не виправдовує чай каталогів доступні для запису всім . Це непогана порада.
Toby Speight

+1 - Погодьтеся, не слідкуйте за цією порадою, дивовижно, як це обклеюється по всьому Інтернету ... Кількість невпевненості, спричиненої людьми, які виступають за це, неймовірна ...
Андре Фігейра
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.