Ubuntu chown, chgrp e umask

Todo arquivo tem um dono e um grupo. As permissões que você viu no chmod dizem o que cada um pode fazer. O chown (change owner, "mudar dono") e o chgrp (change group, "mudar grupo") decidem quem são eles. O umask define as permissões que os arquivos novos já ganham ao nascer.

Você vai aprender
  • A ver o dono e o grupo de um arquivo.
  • A usar o chown nas suas quatro formas (só dono, dono e grupo, só grupo, grupo principal).
  • A consertar o caso mais comum: um arquivo seu que ficou "do root".
  • A montar uma pasta compartilhada e a entender o umask.

Ver o dono e o grupo

No ls -l, o dono é a 3ª coluna e o grupo é a 4ª:

$ ls -l frutas.txt /etc/hostname
-rw-r--r-- 1 root root  9 Mar 26  2026 /etc/hostname     « dono root, grupo root
-rw-rw-r-- 1 ana  ana  47 Oct 14 16:05 frutas.txt        « dono ana, grupo ana
-rw-rw-r--
Permissões: o que o dono, o grupo e os outros podem fazer.
ana
3ª coluna: o dono.
ana
4ª coluna: o grupo. No Ubuntu, cada usuário tem um grupo com o próprio nome.

O comando stat mostra só o que você pedir: stat -c "%U %G %n" frutas.txt imprime ana ana frutas.txt, com dono (%U), grupo (%G) e nome (%n).

Missão: use ls -l para descobrir o dono e o grupo de /etc/hostname, de /etc/shadow e da pasta Documentos. Qual deles tem um grupo diferente do dono?


chown: mudar o dono

Só o root pode dar um arquivo para outra pessoa. Por isso, o chown quase sempre vem com sudo.

sudo
Mudar o dono exige ser administrador.
chown
O programa.
joao:financeiro
Novo dono e, depois dos dois-pontos, novo grupo.
relatorio.ods
O arquivo (ou vários arquivos).
$ ls -l relatorio.ods
-rw-rw-r-- 1 ana ana 8394 Oct 15 10:40 relatorio.ods
$ sudo chown joao:financeiro relatorio.ods
[sudo: authenticate] Senha:
$ ls -l relatorio.ods
-rw-rw-r-- 1 joao financeiro 8394 Oct 15 10:40 relatorio.ods

As quatro formas do chown

FormaExemploMuda
usuariosudo chown joao arqSó o dono
usuario:gruposudo chown joao:financeiro arqDono e grupo
:grupochown :financeiro arqSó o grupo (igual ao chgrp)
usuario:sudo chown joao: arqDono e o grupo principal dele

O caso clássico: "meu arquivo virou do root"

Quando você cria ou copia um arquivo usando sudo, ele nasce com o dono root, mesmo dentro da sua pasta. Depois, você não consegue editá-lo.

  1. A Ana copiou um arquivo do sistema com sudo:

    $ sudo cp /etc/hosts ~/hosts-copia
    $ ls -l ~/hosts-copia
    -rw-r--r-- 1 root root 221 Oct 15 10:40 /home/ana/hosts-copia    « dono: root
  2. Ao tentar escrever nele, recebe um erro:

    $ echo "192.168.0.50 servidor" >> ~/hosts-copia
    bash: /home/ana/hosts-copia: Permissão negada

    O arquivo está na pasta dela, mas pertence ao root, e só o dono tem o w.

  3. Ela devolve o arquivo para si mesma:

    $ sudo chown ana:ana ~/hosts-copia
    $ ls -l ~/hosts-copia
    -rw-r--r-- 1 ana ana 221 Oct 15 10:40 /home/ana/hosts-copia     « agora é dela
    $ echo "192.168.0.50 servidor" >> ~/hosts-copia                « funciona
Evite o problema

Use sudo só para o que realmente precisa. Para ler um arquivo do sistema e guardar uma cópia sua, cp /etc/hosts ~/ sem sudo já funciona, porque o arquivo pode ser lido por todos.


Pastas inteiras: -R

Com -R, o chown muda a pasta e tudo o que está dentro. O exemplo típico é entregar os arquivos de um site ao usuário do servidor web, o www-data:

$ sudo chown -R www-data:www-data /var/www/loja
$ ls -l /var/www/loja
total 12
drwxr-xr-x 2 www-data www-data 4096 Oct 15 10:45 css
-rw-r--r-- 1 www-data www-data  512 Oct 15 10:45 index.html
-rw-r--r-- 1 www-data www-data  880 Oct 15 10:45 contato.html
Cuidado com sudo chown -R

Um caminho errado, como sudo chown -R ana /usr ou um espaço a mais em sudo chown -R ana / home/ana, muda o dono de arquivos do sistema e pode deixar o Ubuntu sem funcionar (o sudo, por exemplo, exige pertencer ao root). Confira o caminho antes de apertar Enter.


chgrp: mudar só o grupo

O chgrp muda apenas o grupo. Diferente do chown, um usuário comum pode usá-lo sem sudo, desde que seja dono do arquivo e participe do grupo de destino.

$ chgrp adm relatorio.txt
$ ls -l relatorio.txt
-rw-rw-r-- 1 ana adm 0 Oct 15 10:50 relatorio.txt     « a ana está no grupo adm: funcionou
$ chgrp root relatorio.txt
chgrp: changing group of 'relatorio.txt': Operation not permitted (os error 1)   « ela não está no grupo root
Para mudar só o grupo…Observação
chgrp equipe arqO comando específico; o mais claro.
chown :equipe arqO mesmo efeito, com dois-pontos na frente.
sudo chgrp -R equipe pastaPara uma pasta inteira, ou grupos de que você não participa.

Projeto: pasta compartilhada pela equipe

A ana e o joao precisam editar os mesmos arquivos. A receita junta grupos, chown e chmod:

  1. Crie o grupo e coloque os dois nele (veja Usuários e Grupos):

    $ sudo groupadd equipe
    $ sudo usermod -aG equipe ana
    $ sudo usermod -aG equipe joao
  2. Crie a pasta e entregue-a ao grupo:

    $ sudo mkdir /srv/equipe
    $ sudo chown root:equipe /srv/equipe
  3. Dê permissão total ao grupo e ligue o setgid (o 2 na frente). Assim, todo arquivo criado ali dentro herda o grupo equipe:

    $ sudo chmod 2775 /srv/equipe
    $ ls -ld /srv/equipe
    drwxrwsr-x 2 root equipe 4096 Oct 15 11:00 /srv/equipe     « o "s" é o setgid
  4. Depois de sair e entrar de novo na sessão (para o grupo valer), teste:

    $ touch /srv/equipe/plano.txt
    $ ls -l /srv/equipe/plano.txt
    -rw-rw-r-- 1 ana equipe 0 Oct 15 11:05 /srv/equipe/plano.txt   « grupo equipe, com rw para o grupo

umask: as permissões de quem acabou de nascer

Quando você cria um arquivo, ele já nasce com permissões. Quem decide quais é a umask (user mask, "máscara do usuário"). Ela não dá permissões: ela diz quais tirar do máximo.

  • O máximo para arquivos é 666 (rw-rw-rw-): arquivos nunca nascem executáveis.
  • O máximo para pastas é 777 (rwxrwxrwx).
  • A umask tira os bits dela desse máximo.
$ umask
0002                                   « o padrão do Ubuntu para usuários comuns
$ umask -S
u=rwx,g=rwx,o=rx                       « o mesmo, em letras: o que fica permitido
umaskArquivo novoPasta novaQuando usar
002664 rw-rw-r--775 rwxrwxr-xPadrão do Ubuntu: você e seu grupo editam
022644 rw-r--r--755 rwxr-xr-xPadrão do root e de servidores
077600 rw-------700 rwx------Máxima privacidade

Veja a umask em ação, mudando o valor só neste terminal:

$ umask 077
$ touch privado.txt
$ mkdir pasta-privada
$ ls -ld privado.txt pasta-privada
drwx------ 2 ana ana 4096 Oct 15 11:10 pasta-privada
-rw------- 1 ana ana    0 Oct 15 11:10 privado.txt

A mudança vale até você fechar o terminal. Para torná-la permanente, acrescente a linha umask 077 ao seu ~/.bashrc (veja .bashrc, alias, PATH).


Quando não funciona

"Operation not permitted" no chown
$ chown joao relatorio.ods
chown: changing ownership of 'relatorio.ods': Operation not permitted (os error 1)

O que aconteceu: um usuário comum não pode dar arquivos para outra pessoa, nem pegar arquivos dos outros. É uma regra de segurança.

Como resolver: sudo chown joao relatorio.ods.

"usuário inválido" ou "invalid group"
$ sudo chown joaoo relatorio.ods
chown: usuário inválido: 'joaoo'
$ chgrp finaceiro relatorio.ods
chgrp: invalid group: 'finaceiro'

O que aconteceu: o usuário ou grupo não existe. Nesses exemplos, os nomes foram digitados errado.

Como confirmar: getent passwd joao e getent group financeiro mostram a linha se o nome existir.

Mudei o grupo, mas a pessoa ainda não consegue editar

O que aconteceu: o grupo do arquivo está certo, mas faltam permissões para o grupo (por exemplo, -rw-r--r-- não tem w no grupo), ou a pessoa entrou no grupo e ainda não refez o login.

Como resolver: chmod g+w arquivo, e peça para a pessoa sair e entrar de novo na sessão.

Mensagem gigante "argumentos obrigatórios não foram fornecidos"
$ chown -R
erro: os seguintes argumentos obrigatórios não foram fornecidos:
  <OWNER>
  <FILE>...

Usage: chown [OPÇÃO]... [PROPRIETÁRIO][:[GRUPO]] ARQUIVO...
       chown [OPÇÃO]... --reference=RFILE ARQUIVO...

Para obter mais informações, use '--help'.

O que aconteceu: faltaram o dono e o arquivo. A mensagem lista o que está faltando (OWNER = dono, FILE = arquivo) e mostra a forma certa na linha Usage.


Referência

Comando / opçãoDescriçãoExemplo
chown usuario arqMuda o donosudo chown joao a.txt
chown usuario:grupo arqMuda dono e gruposudo chown www-data:www-data index.html
chown -RPasta e todo o conteúdosudo chown -R ana:ana ~/projeto
chown -hMuda o link simbólico, não o alvosudo chown -h ana atalho
chown --reference=a bCopia dono e grupo de outro arquivosudo chown --reference=a.txt b.txt
chown -v / -cMostra cada arquivo / só os alteradossudo chown -Rc ana pasta
chgrp grupo arqMuda só o grupochgrp equipe plano.txt
umask / umask -SMostra a máscara (número / letras)umask
umask 077Muda a máscara neste terminalumask 022
stat -c "%U %G" arqMostra dono e grupostat -c "%U:%G %n" *

Exercícios

1. Devolver o arquivo

O arquivo notas.txt na sua pasta ficou com dono root. Complete para devolvê-lo à ana, com o grupo ana:

sudo chown notas.txt

2. Site inteiro

Complete para entregar a pasta do site, com tudo o que tem dentro, ao usuário e ao grupo www-data:

sudo chown www-data:www-data /var/www/loja

3. Só o grupo

Complete para mudar só o grupo de plano.txt para equipe:

plano.txt

4. Com umask 022, com quais permissões nasce um arquivo novo?

5. A ana rodou chown joao arquivo.txt (sem sudo) num arquivo dela. O que acontece?


Resumo

  • Dono e grupo são a 3ª e a 4ª colunas do ls -l.
  • sudo chown usuario:grupo arq muda os dois; -R faz o mesmo numa pasta inteira.
  • chgrp muda só o grupo e funciona sem sudo se você for dono do arquivo e participar do grupo.
  • Arquivo criado com sudo fica do root; devolva com sudo chown ana:ana.
  • A umask tira permissões dos arquivos novos: 002 → 664/775, 022 → 644/755, 077 → 600/700.