Básico de chown e chgrp - Alterando a Propriedade de Arquivos no Linux
O Que chown e chgrp Fazem
chown altera o dono de um arquivo, e chgrp altera o grupo. A sintaxe chown user:group permite alterar ambos de uma vez.
Resumo Rápido
- Alterar dono -->
sudo chown user file - Alterar dono e grupo -->
sudo chown user:group file - Alterar somente o grupo -->
sudo chgrp group file - Recursivo (diretório inteiro) -->
sudo chown -R user:group dir/ - Sempre verifique com
ls -laantes e depois
Verificando a Propriedade Atual com ls -l
A 3a e 4a colunas da saída do ls -l mostram o dono e o grupo.
$ ls -l /var/www/html/index.html
-rw-r--r-- 1 root root 1024 Jun 1 10:00 /var/www/html/index.html
| Coluna | Valor | Significado |
|---|---|---|
| 3a | root |
Usuário dono |
| 4a | root |
Grupo dono |
Sintaxe do chown
Use chown para alterar o usuário dono. Você precisa de sudo para alterar a propriedade de arquivos que não são seus.
Alterar somente o dono
$ sudo chown www-data /var/www/html/index.html $ ls -l /var/www/html/index.html
-rw-r--r-- 1 www-data root 1024 Jun 1 10:00 /var/www/html/index.html
Alterar dono e grupo de uma vez
Use a forma user:group para atualizar ambos em um único comando.
$ sudo chown www-data:www-data /var/www/html/index.html $ ls -l /var/www/html/index.html
-rw-r--r-- 1 www-data www-data 1024 Jun 1 10:00 /var/www/html/index.html
Alterar somente o grupo (sintaxe chown :group)
Deixe a parte do usuário vazia para alterar somente o grupo mantendo o dono atual.
$ sudo chown :developers /var/www/html/
A sintaxe antiga com ponto (chown user.group) ainda funciona na maioria dos sistemas, mas os dois-pontos é o padrão atual.
Sintaxe do chgrp
chgrp é o comando dedicado para alterar o grupo. É funcionalmente equivalente a chown :group.
$ sudo chgrp www-data /var/www/html/index.html $ ls -l /var/www/html/index.html
-rw-r--r-- 1 root www-data 1024 Jun 1 10:00 /var/www/html/index.html
Use chgrp quando quiser deixar explícita a intenção de alterar somente o grupo em um script ou histórico de comandos.
Alterações Recursivas com -R
Adicione -R para aplicar a alteração a todos os arquivos e subdiretórios dentro de um diretório.
$ sudo chown -R www-data:www-data /var/www/html/ $ ls -la /var/www/html/
drwxr-xr-x 2 www-data www-data 4096 Jun 1 10:00 . drwxr-xr-x 3 root root 4096 Jun 1 09:00 .. -rw-r--r-- 1 www-data www-data 1024 Jun 1 10:00 index.html -rw-r--r-- 1 www-data www-data 512 Jun 1 10:00 style.css
-R afeta todos os arquivos sob o diretório alvo. Verifique o conteúdo com ls -la antes de executar para evitar alterações indesejadas.
Padrões de Uso Comuns
Deploy em servidor web (Nginx / Apache)
# Transferir a propriedade para o usuario do servidor web apos o deploy dos arquivos $ sudo chown -R www-data:www-data /var/www/myapp/
Transferindo para um usuário de aplicação
$ sudo chown -R deploy:deploy /opt/myapp/
Recuperando arquivos criados com sudo
Arquivos criados com sudo pertencem ao root. Recupere-os com:
$ sudo chown $USER:$USER ~/myfile.txt
$USER expande automaticamente para o seu nome de login atual.
Erros Comuns e Soluções
Operation not permitted
chown: changing ownership of 'file.txt': Operation not permitted
Causa: Somente root pode alterar a propriedade. Execute com sudo.
$ sudo chown user:group file.txt
invalid user / invalid group
chown: invalid user: 'webmaster' chgrp: invalid group: 'webteam'
Causa: O usuário ou grupo especificado não existe no sistema.
# Listar usuarios $ getent passwd | cut -d: -f1 # Listar grupos $ getent group | cut -d: -f1
Resumo
| Comando | O Que Muda |
|---|---|
chown user file |
Somente o dono |
chown :group file |
Somente o grupo |
chown user:group file |
Dono e grupo |
chgrp group file |
Somente o grupo |
Flag -R |
Aplica recursivamente |
Fluxo de trabalho seguro
# Verificar antes ls -la /path/to/target # Aplicar alteracao sudo chown -R user:group /path/to/target # Verificar depois ls -la /path/to/target