Entender como ver as permissões de um arquivo no Linux é fundamental para qualquer profissional que trabalhe com administração de sistemas, segurança da informação ou infraestrutura de TI. As permissões definem quem pode ler, escrever ou executar um arquivo, e conhecer essa estrutura é essencial para manter a segurança e o controle de acesso adequado em servidores e ambientes corporativos.
No Linux, as permissões são representadas por um conjunto de caracteres que aparecem quando você lista os arquivos, e interpretar essas informações corretamente faz toda a diferença na hora de configurar permissões adequadas, resolver problemas de acesso ou auditar a segurança do sistema. Muitos iniciantes sentem dificuldade nessa tarefa justamente porque a notação pode parecer complexa à primeira vista, mas na prática é um conceito simples e lógico de dominar.
Neste guia, você aprenderá os comandos práticos e a interpretação correta das permissões de arquivos no Linux, começando pelos métodos mais diretos até as opções avançadas para visualização e gerenciamento de permissões em diferentes contextos.
Como ver as permissões de um arquivo no Linux com o comando ls
O comando ls é a forma mais direta e comum para visualizar as permissões de arquivos no Linux. Quando você trabalha com administração de sistemas ou gerenciamento de infraestrutura de TI, entender como ler essas informações é fundamental para manter a segurança e o controle de acesso dos recursos. A DEFTEC oferece trilhas completas sobre administração de redes Linux que cobrem esses conceitos essenciais.
Usando ls -l para visualizar permissões em formato legível
Para visualizar as permissões de um arquivo, utilize o comando ls -l seguido do nome do arquivo ou diretório. Este comando exibe uma listagem detalhada que inclui informações sobre permissões, proprietário, grupo, tamanho, data de modificação e nome do arquivo.
Quando você executa ls -l arquivo.txt, a saída será algo como:
-rw-r–r– 1 usuario grupo 1024 Nov 15 10:30 arquivo.txt
Essa linha contém todas as informações de permissão que você precisa. O primeiro caractere indica o tipo de arquivo (hífen para arquivo regular, “d” para diretório), seguido por nove caracteres que representam as permissões. Você também pode usar ls -la para incluir arquivos ocultos na listagem, ou ls -lh para exibir tamanhos em formato legível (KB, MB, GB).
Entendendo a notação rwx (leitura, escrita, execução)
Os nove caracteres de permissão após o tipo de arquivo são divididos em três grupos de três caracteres cada. Cada caractere representa uma ação específica:
- r (read) – Permissão de leitura. Permite ler o conteúdo do arquivo ou listar o conteúdo de um diretório.
- w (write) – Permissão de escrita. Permite modificar o arquivo ou criar/deletar arquivos dentro de um diretório.
- x (execute) – Permissão de execução. Permite executar o arquivo como programa ou acessar um diretório.
Quando uma permissão não está concedida, um hífen (-) aparece no lugar. Por exemplo, em rw-r–r–, o proprietário tem permissão de leitura e escrita, mas não de execução. O grupo tem apenas leitura, e outros usuários também têm apenas leitura.
Interpretando proprietário, grupo e outros usuários
Os três grupos de permissão (rwx) representam diferentes categorias de usuários:
- Primeiro grupo (posições 1-3) – Permissões do proprietário (owner) do arquivo. Este é o usuário que criou o arquivo ou que foi designado como proprietário.
- Segundo grupo (posições 4-6) – Permissões do grupo. Qualquer usuário que pertença ao grupo do arquivo tem essas permissões.
- Terceiro grupo (posições 7-9) – Permissões de outros usuários (others). Todos os demais usuários do sistema têm apenas essas permissões.
Em um exemplo prático, -rwxr-x— 1 admin devops 2048 Nov 20 14:45 deploy.sh, o proprietário (admin) tem permissão total (rwx), o grupo (devops) pode ler e executar (r-x), e outros usuários não têm nenhuma permissão (—).
Notação numérica (octal) de permissões no Linux
Além da notação simbólica (rwx), o Linux utiliza uma representação numérica baseada em valores octais para as permissões. Essa notação é amplamente usada em scripts, automação e configurações de infraestrutura, especialmente em ambientes de cloud computing onde a automação é crítica.
Como converter permissões para números (755, 644, etc)
Cada permissão tem um valor numérico associado:
- r (read) = 4
- w (write) = 2
- x (execute) = 1
Para calcular a permissão em formato octal, você soma os valores de cada grupo. Por exemplo, rwx (leitura + escrita + execução) = 4 + 2 + 1 = 7. A permissão r– = 4 + 0 + 0 = 4. A permissão rw- = 4 + 2 + 0 = 6.
Permissões comuns em formato octal:
- 755 – Proprietário tem rwx (7), grupo tem r-x (5), outros têm r-x (5). Típico para diretórios e scripts executáveis.
- 644 – Proprietário tem rw- (6), grupo tem r– (4), outros têm r– (4). Padrão para arquivos de dados.
- 700 – Apenas o proprietário tem acesso total (rwx). Usado para arquivos sensíveis.
- 777 – Todos têm permissão total. Não recomendado por questões de segurança.
- 600 – Apenas o proprietário pode ler e escrever. Comum em arquivos de configuração sensíveis.
Visualizando permissões em formato octal com stat
O comando stat exibe as permissões em ambos os formatos. Execute stat arquivo.txt e procure pela linha que mostra “Access: (0644/-rw-r–r–)”. O número entre parênteses é a representação octal, enquanto a notação simbólica aparece após a barra.
Para extrair apenas a representação octal, você pode usar: stat -c “%a %n” arquivo.txt, que exibirá apenas o valor octal e o nome do arquivo.
Comandos para verificar permissões de arquivos
Além do ls, existem outros comandos especializados para visualizar informações detalhadas sobre permissões. Esses comandos são particularmente úteis quando você precisa de informações específicas ou quando trabalha com scripts de automação em ambientes de infraestrutura.
Comando stat para informações detalhadas de permissões
O comando stat fornece informações mais completas do que o ls, incluindo tempos de acesso, modificação e mudança de permissão. Execute stat arquivo.txt para ver detalhes como:
- Tamanho exato do arquivo
- Inode associado
- Número de hard links
- ID do usuário proprietário (UID)
- ID do grupo (GID)
- Tempo de último acesso (atime)
- Tempo de última modificação (mtime)
- Tempo de última mudança de permissão (ctime)
- Tamanho do bloco de alocação
O stat é especialmente útil em scripts de administração de sistemas onde você precisa validar permissões antes de executar operações críticas. A informação de inode, por exemplo, é essencial para entender como o sistema de arquivos organiza os dados em disco.
Usando file para identificar tipo e permissões
O comando file é primariamente usado para identificar o tipo de arquivo, mas também exibe informações de permissão. Execute file -L arquivo.txt para obter informações como tipo MIME e permissões. Embora não seja tão detalhado quanto ls ou stat, é útil quando você precisa rapidamente saber se um arquivo é executável ou qual é seu tipo real.
Em cenários de segurança, o file ajuda a identificar arquivos que podem ter sido renomeados ou disfarçados, combinando a verificação de permissão com a análise do conteúdo real do arquivo.
Modificando permissões com chmod e chown
Após visualizar as permissões, você frequentemente precisará alterá-las. Os comandos chmod e chown são as ferramentas principais para isso. A compreensão desses comandos é crucial para qualquer profissional de administração de sistemas ou infraestrutura de TI.
Alterando permissões com chmod (modo simbólico e numérico)
O comando chmod (change mode) altera as permissões de um arquivo. Existem duas formas de uso: simbólica e numérica.
Modo numérico: Execute chmod 755 arquivo.txt para definir as permissões diretamente para 755. Essa é a forma mais rápida e é frequentemente usada em scripts.
Modo simbólico: Utilize operadores para modificar permissões específicas sem alterar as outras. Os operadores são:
- + – Adiciona uma permissão
- – – Remove uma permissão
- = – Define exatamente as permissões
Exemplos práticos:
- chmod u+x arquivo.txt – Adiciona permissão de execução para o proprietário (u = user)
- chmod g-w arquivo.txt – Remove permissão de escrita do grupo (g = group)
- chmod o-rwx arquivo.txt – Remove todas as permissões de outros usuários (o = others)
- chmod a+r arquivo.txt – Adiciona permissão de leitura para todos (a = all)
- chmod u=rwx,g=rx,o= arquivo.txt – Define permissões específicas para cada categoria
Para aplicar permissões recursivamente a um diretório e seu conteúdo, use a flag -R: chmod -R 755 /caminho/diretorio.
Mudando proprietário e grupo com chown
O comando chown (change owner) altera o proprietário e/ou grupo de um arquivo. Você precisa ter permissões de administrador (sudo) para usar este comando na maioria dos casos.
Sintaxe básica: chown novo_proprietario:novo_grupo arquivo.txt
Exemplos práticos:
- chown usuario arquivo.txt – Muda apenas o proprietário
- chown usuario:grupo arquivo.txt – Muda proprietário e grupo
- chown :grupo arquivo.txt – Muda apenas o grupo
- chown -R usuario:grupo /caminho/diretorio – Aplica recursivamente a um diretório
Em ambientes de infraestrutura de TI, é comum usar chown após instalar aplicações para garantir que os arquivos pertençam aos usuários corretos. Por exemplo, em um servidor web, você pode precisar que os arquivos pertençam ao usuário www-data.
Uma prática importante é combinar chmod e chown em sequência: primeiro define o proprietário e grupo corretos, depois ajusta as permissões. Isso garante que a segurança seja mantida durante operações de administração do sistema.
Permissões especiais: setuid, setgid e sticky bit
Além das permissões básicas rwx, o Linux possui três permissões especiais que modificam como os arquivos e diretórios se comportam. Essas permissões são essenciais para certos tipos de aplicações e configurações de segurança.
O que são e como identificar permissões especiais
SETUID (Set User ID): Quando um arquivo executável tem setuid, ele é executado com as permissões do proprietário, não do usuário que o executou. Na notação simbólica, aparece como s no lugar do x do proprietário (exemplo: -rwsr-xr-x). Em formato octal, é representado pelo primeiro dígito: 4755 (4 = setuid).
SETGID (Set Group ID): Similar ao setuid, mas executa o arquivo com as permissões do grupo. Aparece como s no lugar do x do grupo (exemplo: -rwxr-sr-x). Em formato octal: 2755 (2 = setgid). Quando aplicado a diretórios, setgid faz com que novos arquivos criados herdem o grupo do diretório.
Sticky Bit: Usado principalmente em diretórios compartilhados como /tmp. Apenas o proprietário do arquivo (ou root) pode deletá-lo, mesmo que outros usuários tenham permissão de escrita no diretório. Aparece como t no lugar do x de others (exemplo: -rwxrwxrwt). Em formato octal: 1777 (1 = sticky bit).
Para visualizar essas permissões especiais com ls, use ls -l normalmente. Se houver um s ou t em vez de x, a permissão especial está ativa. Para ver em formato octal completo, use stat -c “%a” arquivo.
Exemplos de uso:
- chmod 4755 programa – Ativa setuid
- chmod 2755 diretorio – Ativa setgid em diretório
- chmod 1777 /tmp – Ativa sticky bit (comum em diretórios temporários)
- chmod u+s arquivo – Ativa setuid em modo simbólico
- chmod g+s diretorio – Ativa setgid em modo simbólico
- chmod o+t diretorio – Ativa sticky bit em modo simbólico
Cuidado ao usar setuid e setgid, pois podem criar vulnerabilidades de segurança se não forem bem compreendidas. Arquivos com setuid são frequentemente alvo de análise em auditorias de segurança, especialmente em ambientes críticos. Ao trabalhar com cibersegurança e administração de sistemas, é importante entender as implicações dessas permissões especiais.
Qual é a diferença entre permissões de arquivo e diretório no Linux?
Embora use a mesma notação rwx, as permissões têm significados diferentes quando aplicadas a arquivos versus diretórios.
Para arquivos:
- r – Permite ler o conteúdo do arquivo
- w – Permite modificar o arquivo
- x – Permite executar o arquivo como programa
Para diretórios:
- r – Permite listar o conteúdo do diretório (ls)
- w – Permite criar, deletar ou renomear arquivos dentro do diretório
- x – Permite acessar o diretório e seus arquivos (cd)
Uma consequência importante: você pode ter permissão de leitura em um diretório (r) mas sem execução (x), permitindo listar arquivos mas não acessá-los. Inversamente, com execução mas sem leitura (x sem r), você pode acessar um arquivo específico se souber seu nome, mas não pode listar o diretório.
Essa distinção é crucial em configurações de segurança. Por exemplo, um diretório com permissão 755 (rwxr-xr-x) permite que qualquer usuário acesse e liste arquivos, enquanto 750 (rwxr-x—) restringe o acesso a outros usuários. Compreender essas diferenças é fundamental para implementar controles de acesso apropriados em infraestrutura de TI.
Como ver permissões de um arquivo específico rapidamente?
Se você precisa verificar as permissões de um arquivo específico sem informações adicionais, existem várias formas rápidas:
- ls -l arquivo.txt – Exibe as permissões em formato simbólico
- stat -c “%a %n” arquivo.txt – Mostra apenas a representação octal e o nome
- stat -c “%A” arquivo.txt – Exibe apenas a notação simbólica
- namei -l arquivo.txt – Mostra permissões de cada componente do caminho
Para verificar múltiplos arquivos rapidamente, combine com grep: ls -l | grep “nome_parcial”. Em scripts, use test -r arquivo para verificar se o arquivo é legível, test -w arquivo para escrita, e test -x arquivo para execução.
O que significa cada dígito na notação octal de permissões?
Na notação octal de permissões, cada dígito representa uma camada específica:
- Primeiro dígito (0-7) – Permissões especiais: 0 = nenhuma, 1 = sticky bit, 2 = setgid, 4 = setuid
- Segundo dígito (0-7) – Permissões do proprietário (user): 4 = r, 2 = w, 1 = x
- Terceiro dígito (0-7) – Permissões do grupo: 4 = r, 2 = w, 1 = x
- Quarto dígito (0-7) – Permissões de others: 4 = r, 2 = w, 1 = x
Exemplos:
- 0755 – Sem permissões especiais, proprietário tem rwx (7), grupo tem r-x (5), others têm r-x (5)
- 4755 – Setuid ativo, proprietário tem rwx (7), grupo tem r-x (5), others têm r-x (5)
- 0644 – Sem permissões especiais, proprietário tem rw- (6), grupo tem r– (4), others têm r– (4)
- 1777 – Sticky bit ativo, todos têm rwx (7)
Quando o primeiro dígito é omitido (como em “755”), assume-se que é 0, ou seja, sem permissões especiais. Esse é o motivo pelo qual frequentemente vemos permissões escritas com três dígitos em vez de quatro.
Como verificar permissões de arquivos em diretórios recursivamente?
Para verificar as permissões de todos os arquivos dentro de um diretório e seus subdiretórios, use ls -lR /caminho/diretorio. O flag -R (recursive) faz o ls percorrer todos os níveis de diretórios.
Para uma saída mais limpa focada apenas em permissões, combine com outros comandos:
- find /caminho -type f -exec ls -l {} \; – Lista permissões de todos os arquivos
- find /caminho -type d -exec ls -ld {} \; – Lista permissões de todos os diretórios
- find /caminho -perm /u+s – Encontra todos os arquivos com setuid
- find /caminho -perm -644 – Encontra arquivos com no mínimo permissão 644
Para verificar permissões em formato octal recursivamente, use:
find /caminho -type f -exec stat -c “%a %n” {} \;
Em scripts de auditoria de segurança e administração de infraestrutura, essas combinações de comandos são essenciais para validar que as permissões estão configuradas conforme esperado. Você pode redirecionar a saída para um arquivo e comparar com configurações anteriores para detectar mudanças não autorizadas.