Я не могу удалить файл, для которого у меня есть полномочия записи как элемент группы

UNIX имеет отдельные понятия "процесс", "обработайте группа" и "сессия".

Каждая оболочка Вы достигаете вход в систему, становится лидером своей собственной новой сессии и группы процесса, и устанавливает группу процесса управления терминала к себе.

Оболочка создает группу процесса в рамках текущей сессии для каждого "задания", которое она запускает и помещает каждый процесс, который это запускает в соответствующую группу процесса. Например, ls | head конвейер двух процессов, которые оболочка рассматривает единственным заданием и будет принадлежать единственной, новой группе процесса.

Процесс (набор) поток выполнения и другого контекста, такого как адресное пространство и таблица дескрипторов файлов. Процесс может запустить другие процессы; эти новые процессы будут принадлежать той же группе процесса как родитель, если другие меры не будут приняты. Каждый процесс может также иметь "терминал управления", который начинается то же как его родитель.

Оболочка имеет понятие "приоритетных" заданий и "фоновых" заданий. Задания переднего плана являются группами процесса с управлением терминала, и фоновые задания являются группами процесса без управления терминала.

Каждый терминал имеет группу приоритетного процесса. При обеспечении задания к переднему плану оболочка устанавливает его как группу приоритетного процесса терминала; при помещении задания в фон оболочка устанавливает группу приоритетного процесса терминала на другую группу процесса или его.

Процессы могут читать из и записать в свой терминал управления, если они находятся в группе приоритетного процесса. Иначе они получают SIGTTIN и SIGTTOU сигналы на попытках читать из и записать в терминал соответственно. По умолчанию эти сигналы приостанавливают процесс, хотя большая часть маски оболочек SIGTTOU так, чтобы фоновое задание могло записать в непрерывный терминал.

12
15.02.2011, 20:05
3 ответа

Удаление файла означает внесение изменений в каталог, это находится в, не сам файл. Вашей группе нужен rw на каталоге, чтобы смочь удалить файл. Полномочия на файле только для внесения изменений в сам файл.

Это могло бы оторваться как путающий сначала, пока Вы не думаете о том, как файловая система работает. Файл является просто inode, и каталог относится к inode. Путем удаления его Вы просто удаляете ссылку на inode того файла в каталоге. Таким образом, Вы изменяете каталог, не файл. У Вас могла быть жесткая ссылка на тот файл в другом каталоге, и Вы все еще сможете удалить его из первого каталога, на самом деле не изменяя сам файл, это все еще существовало бы в другом каталоге.

21
27.01.2020, 19:55
  • 1
    я добираюсь 775 drwxrwxr-x для каталога. –  tshepang 15.02.2011, 20:12
  • 2
    Каково владение группы каталога? Помните, вторые 7, которые Вы упомянули, являются разрешением, которое группа каталога имеет, не группа Вашего пользователя. –  jsbillings 15.02.2011, 20:39
  • 3
    ls -ld /path/to/directory или просто ls -ld . если Вы уже имеете cd'd к тому каталогу. –  jsbillings 15.02.2011, 21:16
  • 4
    по любой причине, статистика не может искать идентификатор 1002 группы. статистика ищет идентификатор группы в/etc/group, NIS, LDAP, и т.д., и это получает ошибку, вот почему Вы видите НЕИЗВЕСТНЫЙ. Я попытался бы работать getent group 1002 видеть, дает ли это Вам более подробную ошибку. –  jsbillings 15.02.2011, 22:06
  • 5
    На самом деле я не нахожу это поведение сбивающим с толку вообще. Это идентично тому, как фактический, "реальный" каталог работает, который является, почему это называют "каталогом", и не, например, "папкой", которая вела бы себя вполне по-другому. Если я хочу удалить кого-то из своего телефонного каталога, я не перехожу к ее дому и уничтожаю ее, я просто беру перо и перечеркиваю ее число. IOW: Мне нужны доступ для записи к каталогу и никакой доступ к ней. Windows имеет папки, Unix имеет каталоги, и они оба ведут себя как их реальные дубликаты. Беспорядок только происходит при спутывании их. –  Jörg W Mittag 16.02.2011, 06:12

Только система может удалить файл, и только если она не имеет никаких ссылок. Простой пользователь может только удалить связь с файлом, то есть, удалить его из каталога. Вам нужен доступ для записи к каталогу для удаления связи с файлом с ним. Удаление связи с файлом не изменяет файл, таким образом, доступ для записи к файлу не важен.

0
27.01.2020, 19:55

Похоже, что для удаления файлов из каталога вам нужны права пользователя на запись . Групповая запись и все пишут недостаточно, несмотря на то, что говорится в принятом ответе.

Я проверил это на двух машинах с двумя файловыми системами:

$ mkdir testdir
$ touch testdir/foo
$ chmod u-w testdir
$ chmod o+w testdir
$ ls -ld testdir
dr-xr-xrwx 2 tim all 17 Nov 25 23:08 testdir
$ rm testdir/foo
rm: cannot remove 'testdir/foo': Permission denied
$ chmod g+w testdir
$ rm testdir/foo
rm: cannot remove 'testdir/foo': Permission denied
$ chmod u+w testdir
$ rm testdir/foo
0
25.11.2021, 22:10

Теги

Похожие вопросы