Por que não consigo excluir um arquivo no qual tenho permissões de gravação em grupo?

26

Eu tenho um arquivo com as seguintes permissões:

root:datae chmoddefina para 775.

Meu usuário normal, vamos chamá-lo de boby, está no datagrupo.

Por que não consigo excluir o arquivo com o usuário boby?

 rwxrwxr-x 18 dados raiz 4096 2011-12-30 22:02 armazenamento
 meu usuário está nos dados do grupo, mas não pode gravar no armazenamento
danidacar
fonte

Respostas:

32

Porque, ao excluir um arquivo, você não está apenas modificando o arquivo, mas também seu diretório.

Portanto, se o seu arquivo for:

rwxrwxr-x

Você seria capaz de fazer:

cp /dev/null <filename>

Mas se suas permissões de diretório forem:

rwxr-xr-x  root  data  <directory name>

O sistema impedirá a remoção do arquivo.

Karlson
fonte
Eu tenho drwxrwxr-x no diretório, eu acho que tem algo a ver com o d em frente
danidacar
2
@ user56301 d apenas indica que este arquivo é um diretório. Qual é a propriedade do diretório?
30911 Karlson
drwxrwxr-x 18 dados raiz
danidacar
Tente executar como usuário bobyo seguinte:cd <directory> ; touch test_file ; rm test_file
Karlson
@ user56301 você pode criar um arquivo nesse diretório? se você não puder, definitivamente não poderá excluir um arquivo lá.
Rich Homolka
12

A exclusão do arquivo é baseada em permissões de diretório, não em permissões de arquivo (*).

Você tem permissões de gravação no diretório que contém o arquivo?

(*) Advertência, você pode ter um diretório onde imponha que somente o proprietário do arquivo possa excluí-lo. Isso é útil para diretórios temporários.

Rich Homolka
fonte
Também dê uma olhada aqui: superuser.com/questions/784952/…, onde o mesmo é discutido.
Meetai.com
1

Se o diretório que contém não permitir que o usuário bobyou o datagrupo grave nele, isso explicaria esse comportamento.

Andrew Lambert
fonte
2
Então, todo o caminho precisa de permissão de grupo? Funciona assim.
Danidacar 30/12
1
@user: Não é o caminho inteiro - apenas o diretório pai imediato do arquivo. Você está apenas modificando o conteúdo do diretório. Os pais mais altos não importam nada .
grawity
Eu atualizo as respostas
danidacar 30/12/11
1
isso não é exatamente verdade. Você só precisa escrever permissões no diretório que contém. As permissões podem ser de usuário, grupo ou outro, não precisa ser permissão de grupo que permita.
Rich Homolka
@ Rich: AFAIK, apenas um conjunto é verificado. Se você é o proprietário, o sistema verificará apenas as permissões de 'proprietário', não 'grupo' nem 'outros'. Se você estiver no grupo, o sistema não verificará as permissões de outras pessoas. ( touch foo; chmod 6 foo; ls -l foo; cat foo)
grawity
1

Tentei a mesma coisa e tive o mesmo problema.

Iniciando uma nova sessão de terminal, o problema. Isso pode ser alcançado por:

  1. Desconectando e efetuando login novamente
  2. Indo para um dos 6 ttys (Ctrl + Alt + F1-6) (Nota: Ctrl + Alt + F7 é a sua sessão da GUI)
  3. usando su bobypara iniciar uma nova sessão para o usuário boby.

Felicidades!

Here Be Wolves
fonte
Ele menciona que já está logado como boby
Luke Luke REINSTATE MONICA
Ele precisa fazer login novamente como boby- a sessão antiga parece obsoleta e não reflete as alterações na associação do grupo.
Here Be Wolves
1

Aposto que o arquivo que você está tentando excluir está em / tmp.

Consulte Linux - o membro do grupo não pode excluir o arquivo com permissão rw

/ tmp geralmente possui o modo "pegajoso", também conhecido como "exclusão restrita" (o + t). Com esse modo definido, apenas o proprietário do arquivo pode mover ou excluir arquivos nesse diretório, independentemente de quaisquer permissões.

Dagelf
fonte