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

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.


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.


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.


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!


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.