Não consigo excluir um arquivo para o qual tenho permissões de gravação como membro do grupo

12
$ touch testfile
$ chmod g+w testfile
$ sudo adduser user2 user1
$ stat -c'%a %A' testfile
664 -rw-rw-r--
$ su user2
Password: 
$ groups
user2 user1
$ rm testfile 
rm: cannot remove 'testfile': Permission denied

O que está faltando?

    
por Tshepang 15.02.2011 / 18:59

2 respostas

20

Excluir um arquivo significa que você está fazendo alterações no diretório em que ele reside, não no próprio arquivo. Seu grupo precisa de rw no diretório para poder remover um arquivo. As permissões em um arquivo são apenas para fazer alterações no próprio arquivo.

Isso pode parecer confuso no início até você pensar em como o sistema de arquivos funciona. Um arquivo é apenas um inode e o diretório se refere ao inode. Ao removê-lo, você está apenas removendo uma referência ao inode desse arquivo no diretório. Então você está mudando o diretório, não o arquivo. Você poderia ter um link físico para esse arquivo em outro diretório, e você ainda seria capaz de removê-lo do primeiro diretório sem realmente alterar o arquivo em si, ele ainda existiria no outro diretório.

    
por 15.02.2011 / 19:05
0

Somente o sistema pode excluir um arquivo e somente se não tiver referências. Um mero usuário pode apenas desvincular um arquivo, isto é, removê-lo de um diretório. Você precisa de acesso de gravação a um diretório para desvincular um arquivo dele. Desvincular um arquivo não modifica o arquivo, portanto, o acesso de gravação ao arquivo é irrelevante.

    
por 09.02.2012 / 11:21