Linux / Comando chown: alterar proprietário e grupo de arquivos

chown altera o proprietário e o grupo associados a arquivos ou diretórios. No GNU chown, indicar somente o usuário mantém o grupo; indicar usuário:grupo altera os dois atributos. A mudança afeta quais regras de acesso se aplicam ao arquivo, por isso confirme a conta, o grupo e o caminho antes de executá-la.

Sintaxe e requisitos

chown [opções] proprietário[:grupo] arquivo...

A sintaxe acima é descritiva. Substitua os marcadores por valores reais e não coloque espaços dentro de usuário:grupo. Os exemplos seguem o GNU chown e usam a opção GNU stat -c; consulte chown --version, chown --help e man chown no sistema Linux da tarefa.

Trocar o proprietário de um arquivo normalmente exige autorização administrativa. Ser capaz de escrever no arquivo não significa ter permissão para transferi-lo a outra conta. O uso de sudo depende da política local e da operação autorizada; não acrescente privilégios apenas para contornar um erro sem identificar sua causa.

Chown trata de proprietário e grupo. Para modificar os bits de leitura, escrita e execução, use o comando chmod. Ainda assim, uma operação chown pode limpar bits especiais setuid ou setgid, conforme a política do sistema. Não presuma que todos os atributos de modo serão preservados.

Confirmar contas, grupos e identificadores

Os nomes alice, editors e developers são ilustrativos. Antes de usá-los, confirme que representam a conta e os grupos pretendidos no sistema de destino. A consulta id alice mostra os identificadores da conta; em Linux com getent disponível, getent group editors e getent group developers consultam os grupos pelo nome.

UID é o identificador numérico de usuário, e GID é o identificador numérico de grupo. Para comparar o arquivo com a conta, use o comando id e uma consulta como stat -c '%u:%g %n' report.txt. Os formatos %u e %g mostram números; %U e %G tentam apresentar os nomes correspondentes.

Em contêineres e sistemas de arquivos de rede, o mesmo nome não garante os mesmos números em todos os ambientes. Compare os identificadores no contexto em que o serviço realmente usa os arquivos. Um nome ausente na consulta não autoriza criar uma conta ou escolher outro identificador por tentativa.

Preparar arquivos e alterar somente o proprietário

Faça a prática numa pasta gravável e com arquivos descartáveis seus. O bloco cria uma nova subpasta, prepara report.txt e demo.txt e mostra os UID, GID e modos iniciais. Só depois consulta alice e mantém o comando de alteração do exemplo:

chown_lab=$(mktemp -d ./chown-demo.XXXXXX) &&
cd -- "$chown_lab" &&
set -C &&
printf 'relatorio\n' > report.txt &&
printf 'demo\n' > demo.txt &&
stat -c '%u:%g %a %n' report.txt demo.txt &&
id alice &&
sudo chown alice report.txt

Continue os exemplos seguintes nessa mesma pasta. Os && interrompem o bloco quando uma etapa falha; se alice não existir, a consulta id falha e sudo chown não é alcançado. A opção de shell set -C protege arquivos regulares existentes contra a redireção com >, mas não impede chown de alterar um arquivo que já existe.

No GNU chown, alice sem dois-pontos pede a troca do proprietário e conserva o grupo do arquivo. A forma alice:, com dois-pontos no final, tem outro efeito: também seleciona o grupo de login de alice. Não acrescente esse sinal como se fosse apenas pontuação.

Registre os valores iniciais antes de prosseguir. A pasta criada pela prática continua sob as permissões de seu criador; mudar o proprietário de um arquivo dentro dela não concede automaticamente à nova conta a travessia dos diretórios do caminho.

Alterar proprietário e grupo juntos

Se alice e editors existem e são os destinos corretos, o exemplo seguinte muda os dois atributos de report.txt:

sudo chown alice:editors report.txt

A parte antes de : é o usuário proprietário; a parte depois é o grupo atribuído ao arquivo. Isso não adiciona alice ao grupo editors nem altera a composição desse grupo. A atribuição ao arquivo e a associação de usuários a grupos são tarefas diferentes.

Confira o resultado pelo nome:

stat -c '%U:%G %n' report.txt

Com a alteração concluída e os nomes resolvidos nesse sistema, a consulta deve identificar alice e editors para report.txt. Compare também os números com stat -c '%u:%g %n' report.txt quando houver dúvida sobre o mapeamento. Não confunda a ausência de saída de chown, normalmente silencioso no sucesso, com a confirmação independente dos atributos.

Conferir uma alteração em demo.txt

Este exemplo usa developers, um grupo diferente de editors. Confirme sua existência e sua adequação antes de executar. O arquivo demo.txt já foi criado na pasta de prática:

sudo chown alice:developers demo.txt
stat -c '%U:%G %n' demo.txt

Saída esperada da consulta se a mudança tiver ocorrido e os nomes forem resolvidos; não é uma alteração observada nesta verificação:

alice:developers demo.txt

Execute e confira cada linha. Se sudo ou chown falhar, a consulta stat seguinte ainda pode funcionar e mostrar os atributos anteriores; ela não transforma a mudança em sucesso. Leia o diagnóstico e, se precisar do status de chown, consulte echo "$?" imediatamente depois dele, antes de stat ou de outro comando.

A verificação disponível usou GNU chown 8.32 no Git para Windows para consultar ajuda e versão, e arquivos próprios para consultar stat. A conta alice não existia nesse ambiente, e não foi feita uma transferência administrativa de propriedade. Isso não reproduz a autorização nem o controle de acesso de um sistema Linux.

Opções e tratamento de links

Opção Efeito
-R Aplica a mudança recursivamente ao conjunto de diretórios e arquivos percorrido.
-h Atua no próprio link simbólico, quando o sistema permite alterar sua propriedade.
--reference=arquivo Usa o proprietário e o grupo do arquivo de referência; não copia seu conteúdo.
-v Mostra um diagnóstico para cada arquivo processado, mesmo sem uma mudança de atributos.

Em operações GNU não recursivas, o comportamento padrão é atuar no destino de um link simbólico. A opção -h seleciona o link em si, quando houver suporte. Já decidir quais diretórios serão percorridos com -R envolve -H, -L e -P: o manual atual informa -P como padrão, sem percorrer links simbólicos. A seleção do objeto e a travessia de uma hierarquia são questões que precisam ser conferidas em conjunto.

Com --reference, um link usado como arquivo de referência é resolvido para obter os atributos do arquivo ao qual aponta. Não use uma referência sem verificar qual objeto ela identifica. O modo detalhado -v também não é uma simulação: as operações solicitadas continuam sendo realizadas.

Restringir a mudança e planejar a reposição

Evite começar por -R num diretório de serviço. Confira primeiro o caminho exato, os atributos com stat e o conjunto com ls ou find. Arquivos diferentes podem precisar de usuários ou grupos distintos, e uma única atribuição recursiva pode impedir a leitura ou escrita necessária ao serviço.

A opção GNU --from restringe a alteração a arquivos cujos atributos atuais correspondem aos especificados. Ela ajuda a limitar o conjunto, mas não oferece uma transação para a árvore inteira nem restaura automaticamente arquivos já alterados se outro falhar. Depois de uma falha parcial, examine os objetos afetados antes de repetir a operação.

Não há um “desfazer” universal de chown. Para repor o estado anterior, um administrador precisa aplicar a cada arquivo os UID e GID que foram registrados antes da mudança, usando a mesma sintaxe de usuário:grupo com os números corretos, e conferir novamente com stat. Confira também o modo e os bits especiais; o registro de somente um proprietário para toda uma árvore não reconstrói atributos que eram diferentes.

Uma alteração em arquivos de teste não prova que um serviço passou a ter acesso. Verifique separadamente as permissões do caminho, os identificadores do serviço e a política de acesso do sistema no ambiente relevante. Não use a operação para substituir uma análise de ACL ou de outras políticas de segurança.

Pergunta frequente

Qual é a diferença entre chown alice report.txt e chown alice:editors report.txt?

No GNU chown, o primeiro troca somente o proprietário e mantém o grupo. O segundo troca o proprietário para alice e o grupo do arquivo para editors. Ambos pressupõem autorização, e os nomes precisam identificar os destinos corretos no sistema consultado.

Documentação

Consulte a documentação oficial do GNU chown e a página de chown publicada pelo Debian para os formatos, links e opções de recursão. A página de manual de getent explica as consultas às bases de usuários e grupos.