Linux / Comando chgrp: alterar e conferir o grupo de arquivos
chgrp muda o grupo associado a um arquivo ou diretório, mantendo o usuário proprietário. A mudança não acrescenta automaticamente permissão de leitura ou escrita ao grupo. Para compartilhar o acesso, confira também os bits do arquivo, os grupos do processo que o acessa e a travessia dos diretórios do caminho.
Sintaxe e requisitos
chgrp [opções] grupo arquivo...
A sintaxe é descritiva: substitua grupo e arquivo pelos destinos reais. O GNU chgrp aceita um nome de grupo ou um GID, o identificador numérico de grupo. Verifique chgrp --version, chgrp --help e man chgrp no sistema Linux em que fará a tarefa.
A autorização depende do sistema. Num modelo Unix usual, o proprietário pode atribuir um de seus próprios grupos ao arquivo; escolher um grupo arbitrário pode exigir privilégios administrativos. Não suponha que ser membro de um grupo dê permissão para alterar arquivos pertencentes a outra pessoa.
Os grupos editors e developers são nomes ilustrativos de grupos diferentes. Em Linux com getent disponível, confirme os destinos com getent group editors e getent group developers. O manual de getent explica essa consulta à base de grupos. Se o nome não for encontrado, confira a configuração e o destino antes de prosseguir.
Preparar arquivos e mudar um grupo
Faça a prática numa pasta gravável usando apenas arquivos descartáveis seus. O bloco cria uma nova subpasta, prepara os quatro arquivos usados nos exemplos e mostra os atributos iniciais. Só depois consulta editors e conserva o comando administrativo do exemplo:
chgrp_lab=$(mktemp -d ./chgrp-demo.XXXXXX) &&
cd -- "$chgrp_lab" &&
set -C &&
printf 'relatorio\n' > report.txt &&
printf 'rascunho\n' > draft.txt &&
printf 'final\n' > final.txt &&
printf 'demo\n' > demo.txt &&
stat -c '%u:%g %a %n' report.txt draft.txt final.txt demo.txt &&
getent group editors &&
sudo chgrp editors report.txt
Continue os exemplos na mesma pasta. Os && impedem que o bloco avance se uma etapa falhar. A opção de shell set -C evita sobrescrever um arquivo regular existente com >; ela não impede uma alteração de grupo feita por chgrp.
A chamada com sudo pressupõe que a operação esteja autorizada pela política do sistema. Se você já puder alterar o grupo do arquivo dentro das regras locais, a elevação pode não ser necessária. Uma recusa deve levar à verificação do proprietário, dos grupos e da política aplicável, não à escolha de privilégios por tentativa.
Aplicar aos arquivos explicitamente indicados
Os arquivos draft.txt e final.txt foram criados na preparação. Para atribuir editors a esses dois arquivos:
sudo chgrp editors draft.txt final.txt
Esse comando recebe dois caminhos explícitos; não percorre a pasta inteira. Confira cada arquivo com stat -c '%U:%G %A %n' draft.txt final.txt. Uma lista de arquivos não é uma transação: uma falha em um destino não significa que todos os outros permaneceram inalterados.
Conferir proprietário, grupo e modo
Para consultar report.txt depois da mudança:
stat -c '%U:%G %A %n' report.txt
Em GNU stat, %U mostra o nome do proprietário, %G mostra o nome do grupo, %A mostra os bits de modo em forma simbólica e %n mostra o nome do arquivo. Compare o proprietário com o registro anterior: chgrp seleciona o grupo, não um novo usuário proprietário.
Se houver dúvida na resolução de nomes, consulte também stat -c '%u:%g %a %n' report.txt. Os campos %u e %g são os números de usuário e grupo. Em contêineres ou sistemas de arquivos de rede, nomes iguais podem corresponder a números diferentes; faça a comparação no ambiente relevante.
Usar developers e interpretar o resultado
O próximo exemplo usa developers em demo.txt. Esse grupo precisa existir, e o usuário que executa chgrp precisa ter autorização para atribuí-lo. A forma sem sudo pressupõe que essa autorização já esteja presente:
chgrp developers demo.txt
stat -c '%G %n' demo.txt
Saída esperada de stat após uma mudança bem-sucedida, com o nome resolvido; não é uma transferência de grupo observada na verificação local:
developers demo.txt
Leia o diagnóstico de chgrp antes de executar stat. Uma consulta bem-sucedida ainda pode mostrar o grupo anterior se a mudança falhou. Para obter o status da alteração, consulte echo "$?" imediatamente depois de chgrp, antes de outro comando; no GNU chgrp, 0 indica sucesso e um retorno diferente indica falha.
A verificação disponível consultou a ajuda do GNU chgrp 8.32 no Git para Windows e atributos de arquivos próprios com stat. Getent e o sudo Linux não estavam disponíveis; não foi executada uma atribuição a editors ou developers. Essa verificação não demonstra a autorização nem o acesso por grupos num sistema Linux.
Separar grupo atribuído e acesso compartilhado
Um arquivo pode pertencer a editors e continuar sem escrita para o grupo. Examine o modo com ls ou stat e, se a política pedir ajuste nos bits, use o comando chmod. Chgrp não adiciona usuários ao grupo, não atualiza automaticamente os grupos de processos existentes e não concede por si só leitura ou escrita.
Confira os grupos do processo que realmente acessa o arquivo com id -G; o guia do comando id explica a diferença entre consultar o processo e uma conta por nome. Após uma mudança administrativa de associação a grupos, uma sessão já aberta pode continuar com a lista anterior. Compare o contexto real do processo antes de atribuir a recusa ao grupo do arquivo.
O x de um diretório permite busca ou travessia. Confira os diretórios do caminho com ls -ld -- caminho: permitir leitura no arquivo não resolve a falta de travessia num diretório superior. Listas de controle de acesso, chamadas ACL, e outras políticas também podem influenciar a autorização.
Para novos arquivos de um diretório compartilhado, o bit setgid, de set group ID, pode fazer o grupo ser herdado do diretório em sistemas que adotam esse comportamento. A explicação do GNU sobre bits de modo descreve essa regra. Ela não acrescenta automaticamente leitura ou escrita ao grupo, e mudar o grupo dos arquivos existentes não configura sozinho essa herança. Este exercício não testa setgid nem acesso por outras contas.
Opções e escopo da mudança
| Opção | Efeito |
|---|---|
-R |
Muda recursivamente o grupo no conjunto de arquivos e diretórios percorrido. |
-h |
Seleciona o próprio link simbólico, quando o sistema permite mudar sua propriedade. |
--reference=arquivo |
Usa o grupo do arquivo de referência, sem copiar conteúdo ou selecionar outro usuário proprietário. |
-v |
Mostra um diagnóstico por arquivo processado; não é uma simulação. |
Em operações GNU não recursivas, o padrão é atuar no destino do link; -h seleciona o link em si, quando houver suporte. A travessia com -R tem regras próprias, por meio de -H, -L e -P; no manual atual, -P é o padrão, sem percorrer links simbólicos. Confira também se uma referência é um link: seu destino é usado para obter o grupo de referência.
Antes de usar -R, confira o caminho e o conjunto com stat, ls ou find. Uma atribuição única não é adequada quando os arquivos precisam de grupos diferentes. Mesmo quando a operação trata apenas do grupo, o sistema pode afetar bits especiais de modo; confira esses atributos depois da alteração.
Para repor um estado anterior, aplique a cada arquivo o GID que foi registrado antes da mudança e confira novamente proprietário, grupo e modo. Não escolha um grupo de “restauração” por suposição: o grupo anterior pode variar entre arquivos. Um status de falha também não desfaz automaticamente mudanças anteriores numa operação com vários destinos.
Pergunta frequente
Chgrp e chown :grupo podem alterar o mesmo atributo?
Sim. No GNU chown, a forma :editors, sem usuário antes dos dois-pontos, seleciona apenas o grupo. Chgrp editors expressa diretamente o objetivo de mudar esse grupo. Use chown quando também precisar tratar do proprietário, observando a autorização e o destino de cada operação.
Documentação
Consulte a documentação oficial do GNU chgrp e a página de chgrp publicada pelo Debian para formatos, opções e regras de recursão.




