CodeGym /Cursos /Docker SELF /Noções básicas de permissões: chmod, chown, umask

Noções básicas de permissões: chmod, chown, umask

Docker SELF
Nível 2 , Lição 0
Disponível

Noções básicas de permissões: chmod, chown, umask

1. Noções de permissões de acesso

Quando você trabalha com arquivos ou diretórios no Linux, muitas vezes surge a necessidade de gerenciar o acesso a eles. Imagine que você deixou suas meias à vista e agora todo mundo em casa pode usá-las! As permissões de acesso no Linux permitem evitar o “uso não autorizado das meias” (ou algo mais importante, como seus scripts). Bora entender como funciona.

Cada arquivo (e diretório) no Linux tem três conjuntos de permissões de acesso que definem quem pode lê-los, gravar ou executá-los:

  1. Leitura (r): Permite visualizar o conteúdo do arquivo ou a lista de arquivos em um diretório.
  2. Gravação (w): Permite alterar o conteúdo do arquivo ou adicionar/remover arquivos do diretório.
  3. Execução (x): Dá a possibilidade de executar o arquivo como um programa (ou acessar o diretório).

Modelo de três níveis

Cada permissão é aplicada a três grupos de usuários:

  • Proprietário (owner): Quem criou o arquivo.
  • Grupo (group): Usuários que fazem parte do grupo atribuído ao arquivo.
  • Demais (others): Todos os outros usuários do sistema.

Exemplo de permissões de acesso para um arquivo:

-rwxr-xr--

Vamos decifrar:

  • O primeiro símbolo - indica que é um arquivo (para diretório será d).
  • Os primeiros três símbolos rwx — permissões para o proprietário (leitura, gravação, execução).
  • Os próximos três símbolos r-x — permissões para o grupo (leitura, execução).
  • Os últimos três símbolos r-- — permissões para os demais (somente leitura).

2. Comando chmod: gerenciando permissões

Formato simbólico

O comando chmod altera permissões de arquivos e diretórios. O formato simbólico é assim:

chmod [quem][ação][permissões] nome_arquivo
  • Quem: u (dono), g (grupo), o (outros), a (todos).
  • Ação: + (adicionar permissão), - (remover permissão), = (definir permissão exatamente).
  • Permissões: r (leitura), w (escrita), x (execução).

Exemplos:


# Conceder permissão de execução para todos
chmod a+x script.sh

# Adicionar permissão de escrita somente para o grupo
chmod g+w file.txt

# Remover permissão de leitura para outros
chmod o-r document.txt

Formato octal

O formato octal (ou numérico) é mais compacto, mas exige entender a "mágica dos números". Neste formato, cada combinação de permissões é representada por um número:

  • r = 4
  • w = 2
  • x = 1

As permissões são somadas:

  • rwx = 7 (4 + 2 + 1)
  • rw- = 6 (4 + 2)
  • r-- = 4

Formato de uso:

chmod [número][número][número] nome_arquivo

Exemplo:


# Conceder rwx para o dono, r-x para o grupo, r-- para os outros
chmod 754 file.sh

3. Mudança de dono do arquivo: comando chown

Se você precisar transferir um arquivo para outro usuário (ou grupo), o comando chown é útil.

Formato:

chown [usuário]:[grupo] nome_do_arquivo

Exemplos:


# Transferir a propriedade para o usuário user1
chown user1 myfile.txt

# Transferir dono e grupo
chown user1:group1 myfile.txt

# Apenas mudar o grupo
chown :group2 myfile.txt

4. Máscara padrão: umask

Quando você cria um arquivo, as permissões para ele são determinadas pelo sistema. Por exemplo, as permissões podem ser rw-r--r--. Mas de onde vêm essas permissões? A resposta: do comando umask.

O que é umask?

umask define quais permissões não serão configuradas para novos arquivos.

Por exemplo:

  • Conjunto básico de permissões para um arquivo: 666 (sem execução).
  • Máscara: 022.
  • Permissões finais: 644 (666 - 022).

Comandos:

  • Ver a máscara atual: umask
  • Definir uma nova máscara: umask 0022

Exemplo:


# Definir a máscara para que novos arquivos tenham rw-rw-r--
umask 0002

5. Permissões de administrador e sudo

O que é sudo?

sudo (abreviação de "superuser do") é um comando no Linux e sistemas similares ao Unix que permite que o usuário execute comandos em nome do superusuário (root) ou de outro usuário com privilégios elevados.

O sistema sudo oferece acesso temporário às funções administrativas sem a necessidade de estar constantemente logado como root, reduzindo os riscos de alterações acidentais ou maliciosas no sistema.

Importante!

Pra simplificar: sudo é escrito antes de um comando que precisa ser executado com permissões de administrador.

Como sudo funciona?

Executando um comando:

Quando você digita um comando com sudo, o sistema verifica se o seu usuário tem permissão para executar comandos com privilégios elevados.

Por exemplo:

sudo apt update

Autenticação:

Na primeira vez que você usa sudo numa sessão, o sistema pede a senha do seu usuário atual (não root).

Depois de inserir a senha corretamente, o sistema armazena a autenticação por um curto período (geralmente de 5 a 15 minutos) para não pedir a senha para cada comando.

Execução do comando:

Se o usuário tiver as permissões configuradas no sudo, o comando será executado com privilégios de superusuário.

Funções principais e comandos do sudo

Executar um comando com privilégios:

sudo <comando>

Por exemplo:

sudo apt install nginx

Executar o comando como outro usuário: Use a flag -u:

sudo -u <nome_do_usuario> <comando>

Por exemplo:

sudo -u user1 ls /home/user1

Obter um terminal administrativo: Inicie um shell com permissões root:

sudo -i

ou:

sudo su

Ver a configuração do sudo:

sudo -l

Mostra os comandos que o usuário atual tem permissão para executar.

Editar a configuração do sudo:

sudo visudo

Esse comando abre o arquivo de configuração /etc/sudoers para edição segura.

6. Exemplos

Vamos aplicar nosso conhecimento na prática.

Tarefa 1: Gerenciar permissões com chmod

  1. Crie um arquivo:

    touch myfile.txt
    
  2. Atribua ao proprietário permissões de leitura, escrita e execução:

    chmod u+rwx myfile.txt
    
  3. Adicione permissões apenas de leitura para os outros:

    chmod o+r myfile.txt
    
  4. Verifique as permissões:

    ls -l myfile.txt
    

Tarefa 2: Alterar o proprietário com chown

  1. Crie um arquivo:

    touch ownedfile.txt
    
  2. Altere o proprietário para o usuário user1 (precisa de permissões de admin):

    sudo chown user1 ownedfile.txt
    
  3. Verifique as alterações:

    ls -l ownedfile.txt
    

Tarefa 3: Experimentar com umask

  1. Verifique a máscara atual:

    umask
    
  2. Defina a máscara como 027:

    umask 027
    
  3. Crie um novo arquivo:

    touch newfile.txt
    
  4. Verifique as permissões do arquivo criado:

    ls -l newfile.txt
    

7. Erros comuns e características

  1. Esqueceu o sudo ao mudar o proprietário: Apenas o administrador pode mudar o proprietário de um arquivo. Se você recebeu o erro "Operation not permitted", tente adicionar sudo.
  2. Ordem incorreta no comando chmod: Alterou as permissões do objeto errado. Certifique-se de que selecionou o arquivo ou diretório correto.
  3. umask só afeta novos arquivos: Se você está tentando alterar permissões de arquivos já existentes com umask, isso não funcionará. Use chmod.

Você sabia que as permissões no Linux são tão flexíveis que é possível criar um arquivo que "só uma pessoa consegue ver em todo o universo"? Como dizem, com grandes permissões vêm grandes responsabilidades! Agora, armados com chmod, chown e umask, vocês estão prontos para tornar seus sistemas Linux não só práticos, mas também seguros.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION