Чому я не можу видалити файл, на якому увімкнено груповий дозвіл на запис?


26

У мене є файл із такими дозволами:

root:data, і chmodвстановлено 775.

Мій звичайний користувач, назвемо його бобі, в dataгрупі.

Чому я не можу видалити файл із користувачем boby?

 rwxrwxr-x 18 кореневих даних 4096 2011-12-30 22:02 зберігання
 мій користувач перебуває в групових даних, але не може записати його на зберігання

Відповіді:


32

Тому що, видаляючи файл, ви не лише модифікуєте файл, але і модифікуєте його каталог.

Отже, якщо ваш файл:

rwxrwxr-x

Ви зможете зробити:

cp /dev/null <filename>

Але якщо дозволу на ваш каталог:

rwxr-xr-x  root  data  <directory name>

Тоді система не дозволить вам видалити файл.


У мене в каталозі drwxrwxr-x, я думаю, це має щось
— спільне

2
@ user56301 d просто вказує, що цей файл є каталогом. Яке право власності на каталог?
— Карлсон

drwxrwxr-x 18 кореневих даних
— danidacar

Спробуйте запустити як користувача bobyнаступне:cd <directory> ; touch test_file ; rm test_file
— Карлсон

@ user56301 чи можете ви створити файл у цьому каталозі? якщо ви не можете, то ви точно не можете видалити файл.
— Багата Гомолка

12

Видалення файлів базується на perms-каталозі, а не на perms-файлі (*).

Чи є у вас дозволи на запис у каталозі, який містить файл?

(*) Caveat, у вас може бути каталог, в якому ви застосовуєте, що видалити його може лише власник файлу. Це корисно для температурних панів.


Подивіться також тут: superuser.com/questions/784952/…, де обговорюється те саме.
— Meetai.com

1

Якщо каталог, що містить, не дозволяє користувачеві bobyабо dataгрупі писати до нього, це пояснює цю поведінку.


2
Тож на весь шлях потрібен дозвіл групи? Це працює так.
— danidacar

1
@user: Не весь шлях - лише безпосередній батьківський каталог файлу. Ви лише змінюєте вміст каталогу. Ці високі батьки не мають значення взагалі .
— grawity


1
Це не зовсім так. Вам потрібно лише записати perms в каталог, що містить. Перманентні речовини можуть бути будь-якими користувачами, групами чи іншими особами, це не повинно бути груповими хімічними речовинами, які дозволяють вам.
— Багата Гомолка

@Rich: AFAIK, перевіряється лише один набір. Якщо ви є власником, система перевірятиме лише "власник" perms, а не "group" та "other". Якщо ви перебуваєте в групі, система не перевірятиме «чужі» кари. ( touch foo; chmod 6 foo; ls -l foo; cat foo)
— grawity

1

Я спробував те саме, і зіткнувся з тією ж проблемою.

Початок нового термінального сеансу проблема. Цього можна досягти:

  1. Вихід із системи та вхід у систему
  2. Перехід до однієї з 6 тит (Ctrl + Alt + F1-6) (Примітка: Ctrl + Alt + F7 - це ваш сеанс GUI)
  3. використовуючи su bobyдля початку нового сеансу для користувача boby.

Ура!


Він згадує, що вже зареєстрований як бобі
— канадський Лука REINSTATE MONICA

Йому потрібно знову увійти до системи, оскільки bobyстарий сеанс здається несвіжим і не відображає зміни в асоціації групи.
— Here Be Wolves

1

Б'юсь об заклад, що файл, який ви намагаєтесь видалити, знаходиться в / tmp.

Див. Linux - член групи не може видалити файл з дозволу rw

/ tmp зазвичай встановлює режим "липкий", який називається "обмеженим видаленням" (o + t). Якщо встановити цей режим, лише власник файлу може переміщувати або видаляти файли в цій директорії незалежно від дозволів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.