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


17

Parece que ainda sinto falta de algumas coisas sobre como as permissões funcionam. Estou em um sistema debian 7 btw. agora eu tenho esse arquivo do qual baixei e pertence myuser:myuser, ou seja, usuário e grupo estão definidos para mim. Ele também reside no meu $HOMEdiretório, pois é para onde eu o baixei.

Por enquanto, tudo bem. Agora, quero compartilhar esse arquivo com outros usuários do PC e, para isso, quero mudar a propriedade do grupo para o grupo "users". 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


é o /xmas_carolsamba / nfs mount?
Rahul Patil

A solução é setfacl(se o sistema de arquivos tiver ACLs). veja unix.stackexchange.com/questions/101263/...
ctrl-alt-Delor

Eu tive o mesmo erro até perceber que havia me adicionado a esse grupo. Em outras palavras, eu tive que sair, fazer login novamente, para que as alterações entrassem em vigor.
Jonathan

Respostas:


22

Seu usuário provavelmente não é um membro do usersgrupo, portanto você não tem o direito de atribuir um arquivo a esse grupo. 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 do POSIX :

Somente o proprietário de um arquivo ou o usuário com privilégios apropriados pode alterar o proprietário ou o grupo de um arquivo.

Algumas implementações restringem o uso do chgrp a um usuário com privilégios apropriados quando o grupo especificado não é o ID do grupo efetivo ou um dos IDs de grupo suplementares do processo de chamada.

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

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

De qualquer forma, como não é dessa maneira que as distribuições baseadas no Debian são configuradas hoje em dia, a maneira de conceder a um usuário específico acesso 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. Apenas 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 a todos.


4

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 herdadas de diferentes tipos de UNIX suportam 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 em que o arquivo reside possui cotas de grupo ativadas, um usuário com intenção maliciosa pode simplesmente preencher a cota do grupo estrangeiro, tornando impossível para os usuários com esse grupo como ID do grupo principal para criar outros arquivos. Isso pode afetar facilmente até processos já em execução e causar a morte por causa do "disco cheio".

Para contornar o problema, existem (pelo menos) duas possibilidades: Primeiro, você pode solicitar ao super usuário do seu sistema que adicione o grupo-alvo pretendido à lista de grupos suplementares da sua conta. É claro que isso só faz sentido se você não tiver uma relação com esse grupo.

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

$ setfacl -m group:thegroupsname:rwx the_file(s)

você não precisa executar (em um arquivo comum) e provavelmente não deseja conceder permissão de gravação.
CTRL-ALT-DELOR

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 eu aparecer, então o atributo imutável é definido e ninguém pode modificar o arquivo (mesmo root).

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 páginas de manual

man chattr
man lsattr

Bom ponto, mas a partir da pergunta, suponho que o interlocutor não tenha direitos de superusuário, que você precisa limpar a flag imutável (pelo menos em todos os sistemas de arquivos que eu desenvolvi por tanto tempo). Além disso, como ele acabou de extrair um arquivo, provavelmente não é o problema, pois o arquivador usado precisaria configurá-lo (o mesmo problema).
Andreas Wiese

0

Se você se adicionou ao grupo agora mesmo, faça logout, faça login novamente para garantir que as alterações entrem em vigor.

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.