Permissão negada para alterar o gid (group) de um arquivo que possuo

16

Parece que ainda sinto falta de algumas coisas sobre como as permissões funcionam. Eu estou em um sistema debian 7 btw. só agora tenho esse arquivo do qual fiz o download e ele pertence a myuser:myuser , que é usuário e grupo estão configurados para mim. Ele também reside no meu diretório $HOME , já que é onde eu fiz o download.

Até aí tudo bem. Agora eu quero compartilhar este arquivo com alguns outros usuários do PC e para isso eu quero mudar a propriedade do grupo do arquivo para agrupar "usuários". no entanto, isso falha:

nass@quarx:~/xmas_carol$ chgrp -R users * 
chgrp: changing group of movie.mov': Operation not permitted

E o conteúdo da pasta é:

-rwxr-xr-x 1 nass nass 2482411461 Feb  6 03:57 movie.mov

Estou confuso sobre o que está acontecendo com as permissões. Alguém pode explicar

    
por nass 06.02.2014 / 03:15

4 respostas

22

Seu usuário provavelmente não é membro do grupo users , portanto você não tem o direito de fornecer um arquivo para esse grupo. Para ilustrar:

$ groups
terdon sudo netdev fuse vboxsf vboxusers

$ ls -l file
-rw-r--r-- 1 terdon terdon 604 Feb  6 03:04 file
$ chgrp users file
chgrp: changing group of ‘file’: Operation not permitted
$ chgrp vboxusers file
$ ls -l file
-rw-r--r-- 1 terdon vboxusers 604 Feb  6 03:04 file

Esse comportamento é mencionado nas especificações POSIX :

Only the owner of a file or the user with appropriate privileges may change the owner or group of a file.

Some implementations restrict the use of chgrp to a user with appropriate privileges when the group specified is not the effective group ID or one of the supplementary group IDs of the calling process.

A principal razão para isso é que, se você não for membro de um grupo, não poderá modificar o acesso a esse grupo. Esta resposta nas permissões chown também é relevante.

Tradicionalmente, em sistemas compartilhados, você tem um grupo users ao qual todos os usuários regulares pertencem e que é o grupo principal de cada usuário. Dessa forma, os arquivos são criados pelo grupo users e todos os usuários podem lê-los.

De qualquer forma, já que não é assim que as distribuições baseadas no Debian são configuradas atualmente, a maneira de dar acesso de usuário específico ao seu arquivo seria

  1. Altere a propriedade do grupo do arquivo / diretório para um grupo do qual você e o outro usuário sejam membros;

  2. Altere as permissões do arquivo / diretório de acordo:

    $ chmod 755 /home/terdon
    $ ls -ld /home/terdon
    drwxr-xr-x 170 terdon terdon 491520 Apr 20 13:43 /home/terdon/
    

    Isso tornará o diretório acessível para todos.

por 06.02.2014 / 03:51
3

Em UNICes recentes (e "recente" tem um significado bastante amplo aqui), você não pode alterar a propriedade do grupo de arquivos para um grupo do qual você não é membro. Versões legadas de diferentes versões UNIX suportavam isso, para casos de uso como o seu, mas provou ser um problema de segurança.

O problema de poder alterar a propriedade do grupo para grupos estrangeiros é bastante trivial: se o sistema de arquivos no qual o arquivo reside tiver cotas de grupo ativadas, um usuário com intenção maliciosa poderia simplesmente preencher a cota do grupo estrangeiro, tornando impossível para os usuários com esse grupo como ID de grupo primário criarem outros arquivos. Isso pode facilmente afetar até mesmo processos já em execução e fazer com que eles morram por causa do "disco cheio".

Para contornar o problema, há (pelo menos) duas possibilidades: primeiro, você pode pedir ao superusuário de seu sistema para adicionar o grupo-alvo à lista de grupos suplementares da sua conta. Claro que isso só faz sentido limitado se você não tiver uma relação com esse grupo.

A outra maneira de não precisar tornar o arquivo gravável pelo mundo, o que certamente não é desejado, é usar as ACLs para conceder ao grupo pretendido permissões de leitura e gravação:

$ setfacl -m group:thegroupsname:rwx the_file(s)
    
por 21.04.2014 / 14:49
2

Pode ser porque o bit imutável está definido. Obter a lista de atributos de arquivo em execução

lsattr /path/to/your/file

se i aparecer, o atributo imutável será definido e ninguém poderá modificar o arquivo (mesmo raiz).

Para remover o atributo, você deve executar como root

chattr -i /path/to/your/file

Para ver mais atributos do sistema de arquivos, leia as man pages

man chattr
man lsattr
    
por 06.02.2014 / 15:05
0

Se você acabou de se inscrever no grupo, não se esqueça de fazer logout, faça login novamente para garantir que as alterações entrem em vigor.

    
por 07.04.2018 / 00:45