UNIX имеет отдельные понятия "процесс", "обработайте группа" и "сессия".
Каждая оболочка Вы достигаете вход в систему, становится лидером своей собственной новой сессии и группы процесса, и устанавливает группу процесса управления терминала к себе.
Оболочка создает группу процесса в рамках текущей сессии для каждого "задания", которое она запускает и помещает каждый процесс, который это запускает в соответствующую группу процесса. Например, ls | head
конвейер двух процессов, которые оболочка рассматривает единственным заданием и будет принадлежать единственной, новой группе процесса.
Процесс (набор) поток выполнения и другого контекста, такого как адресное пространство и таблица дескрипторов файлов. Процесс может запустить другие процессы; эти новые процессы будут принадлежать той же группе процесса как родитель, если другие меры не будут приняты. Каждый процесс может также иметь "терминал управления", который начинается то же как его родитель.
Оболочка имеет понятие "приоритетных" заданий и "фоновых" заданий. Задания переднего плана являются группами процесса с управлением терминала, и фоновые задания являются группами процесса без управления терминала.
Каждый терминал имеет группу приоритетного процесса. При обеспечении задания к переднему плану оболочка устанавливает его как группу приоритетного процесса терминала; при помещении задания в фон оболочка устанавливает группу приоритетного процесса терминала на другую группу процесса или его.
Процессы могут читать из и записать в свой терминал управления, если они находятся в группе приоритетного процесса. Иначе они получают SIGTTIN
и SIGTTOU
сигналы на попытках читать из и записать в терминал соответственно. По умолчанию эти сигналы приостанавливают процесс, хотя большая часть маски оболочек SIGTTOU
так, чтобы фоновое задание могло записать в непрерывный терминал.
Удаление файла означает внесение изменений в каталог, это находится в, не сам файл. Вашей группе нужен rw на каталоге, чтобы смочь удалить файл. Полномочия на файле только для внесения изменений в сам файл.
Это могло бы оторваться как путающий сначала, пока Вы не думаете о том, как файловая система работает. Файл является просто inode, и каталог относится к inode. Путем удаления его Вы просто удаляете ссылку на inode того файла в каталоге. Таким образом, Вы изменяете каталог, не файл. У Вас могла быть жесткая ссылка на тот файл в другом каталоге, и Вы все еще сможете удалить его из первого каталога, на самом деле не изменяя сам файл, это все еще существовало бы в другом каталоге.
Только система может удалить файл, и только если она не имеет никаких ссылок. Простой пользователь может только удалить связь с файлом, то есть, удалить его из каталога. Вам нужен доступ для записи к каталогу для удаления связи с файлом с ним. Удаление связи с файлом не изменяет файл, таким образом, доступ для записи к файлу не важен.
Похоже, что для удаления файлов из каталога вам нужны права пользователя на запись . Групповая запись и все пишут недостаточно, несмотря на то, что говорится в принятом ответе.
Я проверил это на двух машинах с двумя файловыми системами:
$ 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
775 drwxrwxr-x
для каталога. – tshepang 15.02.2011, 20:12ls -ld /path/to/directory
или простоls -ld .
если Вы уже имеете cd'd к тому каталогу. – jsbillings 15.02.2011, 21:16getent group 1002
видеть, дает ли это Вам более подробную ошибку. – jsbillings 15.02.2011, 22:06