Почему я не могу удалить файл, для которого у меня есть права на групповую запись?

26

У меня есть файл со следующими разрешениями:

root:dataи chmodустановите на 775.

Мой обычный пользователь, назовем его Бобби, в dataгруппе.

Почему я не могу удалить файл с пользователем boby?

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

Ответы:

32

Потому что, удаляя файл, вы не только изменяете файл, но и изменяете его каталог.

Так что, если ваш файл:

rwxrwxr-x

Вы сможете сделать:

cp /dev/null <filename>

Но если ваш каталог разрешений:

rwxr-xr-x  root  data  <directory name>

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

Карлсон
источник
У меня есть drwxrwxr-x в каталоге, я думаю, что это как-то связано с d впереди
danidacar
2
@ user56301 d просто указывает, что этот файл является каталогом. Какова собственность на каталог?
Карлсон
drwxrwxr-x 18 корневые данные
danidacar
Попробуйте запустить как пользователь bobyследующее:cd <directory> ; touch test_file ; rm test_file
Карлсон
@ user56301 вы можете создать файл в этом каталоге? если вы не можете, то вы определенно не можете удалить файл там.
Богатая гомолка
12

Удаление файла основано на разрешении каталога, а не на разрешении файла (*).

У вас есть права на запись в каталог, содержащий файл?

(*) Предостережение: у вас может быть каталог, в котором вы обязуетесь, что только владелец файла может удалить его. Это полезно для временных директорий.

Рич Гомолка
источник
Также посмотрите здесь: superuser.com/questions/784952/… где обсуждается то же самое.
Meetai.com
1

Если содержащий каталог не позволяет пользователю bobyили dataгруппе писать в него, то это объясняет это поведение.

Эндрю Ламберт
источник
2
Таким образом, весь путь требует разрешения группы? Это работает так.
Данидакар
1
@user: Не весь путь - только непосредственный родительский каталог файла. Вы только изменяете содержимое каталога. Эти высокие родители не имеют значения вообще .
grawity
Я обновляю ответы
danidacar
1
Это не совсем так. Вам нужно только написать разрешительные документы в каталог, содержащий. Пермь может быть любой из пользователей, групп или других, она не должна быть групповой, которая позволяет вам.
Богатая гомолка
@Rich: AFAIK, проверяется только один комплект. Если вы владелец, система будет проверять только «владелец», а не «группа» и «другие». Если вы находитесь в группе, система не будет проверять «чужие» документы. ( touch foo; chmod 6 foo; ls -l foo; cat foo)
grawity
1

Я попробовал то же самое, и столкнулся с той же проблемой.

Запуск нового терминального сеанса проблема. Это может быть достигнуто путем:

  1. Выход и вход в систему
  2. Переход к одному из 6 ttys (Ctrl + Alt + F1-6) (Примечание: Ctrl + Alt + F7 - ваша сессия GUI)
  3. используя, su bobyчтобы начать новый сеанс для пользователя boby.

Ура!

Здесь быть волками
источник
Он упоминает, что он уже вошел в систему как Бобби
канадец Люк ОБНОВИТЬ МОНИКА
Ему нужно снова войти в систему, так как boby- старый сеанс устарел и не отражает изменения ассоциации группы.
Здесь Be Волки
1

Бьюсь об заклад, файл, который вы пытаетесь удалить, находится в / tmp.

См. Linux - член группы не может удалить файл с правами rw

/ tmp обычно имеет установленный режим «закрепления» или «ограниченное удаление» (o + t). Если установлен этот режим, только владелец файла может перемещать или удалять файлы в этом каталоге независимо от каких-либо разрешений.

Dagelf
источник