Как удалить чужой подкаталог из моего каталога?

3297
markpasc

Я делился файлами с коллегой на сервере Linux, и он добавил несколько новых файлов. Теперь мы переместили файлы куда-то еще, поэтому я хотел бы удалить старые файлы. Однако, когда мой коллега добавил свои файлы, используемое нами программное обеспечение создало новые подкаталоги, принадлежащие его учетной записи, и я не могу найти совершенно правильную команду для их удаления.

$ ls -a total 20 drwxrwxr-x 5 markpasc markpasc 4096 Sep 20 09:48 ./ drwxrwxr-x 3 markpasc markpasc 4096 Sep 20 09:48 ../ drwxr-xr-x 2 coworker coworker 4096 Sep 16 14:07 82/ drwxr-xr-x 2 coworker coworker 4096 Sep 16 14:07 c4/ 

Я старался:

$ rm -rf 82 rm: cannot remove `82/b7fc78bc548537f3ea235026b7322fe3bea91f': Permission denied $ rm -f 82/b7fc78bc548537f3ea235026b7322fe3bea91f rm: cannot remove `82/b7fc78bc548537f3ea235026b7322fe3bea91f': Permission denied $ rmdir 82/ rmdir: 82/: Directory not empty $ 

Я знаю, что обычно я могу удалить файл, принадлежащий кому-то еще, из моего каталога:

$ ls -a total 8 drwxrwxr-x 2 markpasc markpasc 4096 Sep 20 10:13 ./ drwxr-xr-x 24 markpasc markpasc 4096 Sep 20 10:13 ../ -rw-rw-r-- 1 someuser someuser 0 Sep 20 10:13 file $ rm file rm: remove write-protected regular empty file `file'? y $ ls file ls: file: No such file or directory $ 

Есть ли способ удалить эти каталоги самостоятельно, или мой коллега (или root) должен удалить их?

3
вы, вероятно, должны спросить рут Nathan Fellman 14 лет назад 1
Спасибо! Я спросил своего коллегу, и он помог мне удалить их, но я подумал, есть ли какой-то другой способ, который я пропустил. markpasc 14 лет назад 0
Нет, только root может преодолеть ограничения аккаунта. harrymc 14 лет назад 0

1 ответ на вопрос

4
Gilles

Чтобы удалить каталог, вам нужны две вещи: доступ на запись в родительский каталог и чтобы этот каталог был пустым. Таким образом, ваш коллега, или корень, должен сотрудничать. Это ограничение модели разрешений Unix.

Для улучшения рабочего процесса, когда дерево каталогов доступно для записи нескольким пользователям, вы можете использовать списки контроля доступа (если они поддерживаются) или каталоги setgid.

  • С помощью списков ACL предоставьте доступ на запись к каталогу тому, кто его должен иметь, и установите ACL по умолчанию, чтобы также предоставить доступ на запись, чтобы вновь созданные файлы и подкаталоги наследовали нужные разрешения. Пользователи могут переопределить эти значения по умолчанию, но до тех пор, пока они будут пассивно взаимодействовать, разрешения будут в порядке.

    setfacl -m user:coworker:rwx . setfacl -d -m user:coworker:rwx . 
  • Если у вас нет ACL, вы можете предоставить доступ на запись для группы и установить бит setgid в каталоге. Это приводит к тому, что вновь созданные файлы и подкаталоги принадлежат рассматриваемой группе, а не группе по умолчанию в процессе создания. Тем не менее, пользователи по-прежнему должны давать групповым разрешениям на запись новые файлы и каталоги (это происходит автоматически, только если они есть umask 002).

    chgrp mygroup . chmod g+ws . 

Вы можете быть заинтересованы в этой теме о том, почему все так работает .

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