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:
- Leitura (r): Permite visualizar o conteúdo do arquivo ou a lista de arquivos em um diretório.
- Gravação (w): Permite alterar o conteúdo do arquivo ou adicionar/remover arquivos do diretório.
- 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.
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
Crie um arquivo:
touch myfile.txt
Atribua ao proprietário permissões de leitura, escrita e execução:
chmod u+rwx myfile.txt
Adicione permissões apenas de leitura para os outros:
chmod o+r myfile.txt
Verifique as permissões:
ls -l myfile.txt
Tarefa 2: Alterar o proprietário com chown
Crie um arquivo:
touch ownedfile.txt
Altere o proprietário para o usuário
user1
(precisa de permissões de admin):sudo chown user1 ownedfile.txt
Verifique as alterações:
ls -l ownedfile.txt
Tarefa 3: Experimentar com umask
Verifique a máscara atual:
umask
Defina a máscara como
027
:umask 027
Crie um novo arquivo:
touch newfile.txt
Verifique as permissões do arquivo criado:
ls -l newfile.txt
7. Erros comuns e características
- 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 adicionarsudo
. - Ordem incorreta no comando
chmod
: Alterou as permissões do objeto errado. Certifique-se de que selecionou o arquivo ou diretório correto. umask
só afeta novos arquivos: Se você está tentando alterar permissões de arquivos já existentes comumask
, isso não funcionará. Usechmod
.
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.
GO TO FULL VERSION