Dando continuidade à nossa série baseada no roadmap.sh/linux, hoje vamos mergulhar em um tema essencial para qualquer usuário de Linux: o gerenciamento de arquivos. Neste artigo, exploraremos como trabalhar com arquivos no Linux, focando especialmente em como manipulá-los e entender suas permissões. Compreender a estrutura de arquivos e como as permissões funcionam é fundamental para garantir a segurança e eficiência ao interagir com o sistema. Vamos desvendar esses conceitos de forma prática e direta para que você possa dominar o ambiente Linux com confiança.
Estrutura das permissões
Cada arquivo ou diretório no Linux tem um conjunto de permissões que se aplica a três categorias de usuários:
- Usuário (u): O proprietário do arquivo.
- Grupo (g): Os usuários que pertencem ao mesmo grupo que o proprietário.
- Outros (o): Todos os outros usuários.
Tipos de permissões
Existem três tipos principais de permissões que podem ser atribuídas:
- Leitura (r): Permissão para ler o conteúdo do arquivo ou listar o conteúdo do diretório.
- Escrita (w): Permissão para modificar o conteúdo do arquivo ou alterar o conteúdo do diretório (como criar, remover ou renomear arquivos dentro do diretório).
- Execução (x): Permissão para executar o arquivo (se for um programa ou script) ou entrar no diretório e acessar arquivos dentro dele.
Exibindo Permissões
Para visualizar as permissões de um arquivo ou diretório, use o comando ls -l
:
ls -l arquivo.txt
arquivo.txt -rwxr-xr--
Decodificando permissões
A saída -rwxr-xr--
pode ser dividida em quatro partes:
- Tipo de arquivo: O primeiro caractere indica o tipo de arquivo:
- “: Arquivo regular.
d
: Diretório.l
: Link simbólico.
- Permissões do proprietário (usuário): Os próximos três caracteres (
rwx
) indicam as permissões do proprietário do arquivo:r
: Leituraw
: Escritax
: Execução
- Permissões do grupo: Os três caracteres seguintes (
r-x
) indicam as permissões para o grupo:r
: Leitura- “: Sem permissão de escrita
x
: Execução
- Permissões para outros: Os últimos três caracteres (
r--
) indicam as permissões para outros usuários:r
: Leitura- “: Sem permissão de escrita
- “: Sem permissão de execução
Alterando permissões
Usando a Notação Simbólica
A notação simbólica permite modificar as permissões de forma granular.
chmod u+x arquivo.txt
Explicação:
u+x
: Adiciona (+
) permissão de execução (x
) ao proprietário (u
) do arquivo.- Outras combinações incluem:
g
para grupoo
para outrosa
para todos (usuário, grupo e outros)
Usando a Notação Numérica (Octal)
A notação numérica usa números para representar as permissões:
- 4: Leitura (r)
- 2: Escrita (w)
- 1: Execução (x)
- 0: Sem permissão
Cada conjunto de permissões (usuário, grupo, outros) é representado por um número somando os valores:
rwx
= 4 + 2 + 1 = 7rw-
= 4 + 2 + 0 = 6r-x
= 4 + 0 + 1 = 5
Por exemplo, para dar ao usuário permissões completas (7), ao grupo permissão de leitura e execução (5), e a outros apenas leitura (4), você usaria:
chmod 754 arquivo.txt
Permissões proprietário e grupo
Alterando Proprietário e Grupo
O comando chown
é usado para alterar o proprietário de um arquivo ou diretório:
chown novo_usuario arquivo.txt
Para alterar tanto o proprietário quanto o grupo:
chown novo_usuario:novo_grupo arquivo.txt
O comando chgrp
pode ser usado para mudar apenas o grupo:
chgrp novo_grupo arquivo.txt
Permissões Especiais
Além das permissões básicas, há permissões especiais que podem ser configuradas em arquivos e diretórios:
Setuid (SUID): Aplicável a arquivos executáveis, permite que o arquivo seja executado com as permissões do proprietário do arquivo, não do usuário que o executa. Representado por s
no lugar de x
nas permissões do proprietário.
chmod u+s arquivo.txt
Setgid (SGID): Em diretórios, garante que os arquivos criados dentro do diretório herdem o grupo do diretório, em vez do grupo primário do usuário que os criou. Para arquivos executáveis, funciona de forma semelhante ao SUID, mas com as permissões de grupo. Representado por s
no lugar de x
nas permissões de grupo.
chmod g+s arquivo.txt
Sticky bit: Aplicável a diretórios, impede que usuários apaguem ou renomeiem arquivos de outros usuários no diretório, mesmo que tenham permissão de escrita. Representado por t no lugar de x nas permissões de outros.
chmod +t /diretorio