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


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 в каталоге, я думаю, что это как-то связано с 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). Если установлен этот режим, только владелец файла может перемещать или удалять файлы в этом каталоге независимо от каких-либо разрешений.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.