Calculadora Chmod

Calculadora interativa de permissões de arquivos Linux/Unix.

Nenhum dado sai do seu dispositivo
Leitura (4)
Escrita (2)
Execução (1)
Proprietário
Grupo
Outros
Numérico
Simbólico ---------
chmod 000 filename

Permissões comuns

Como usar

  1. Marque as caixas para definir as permissões de leitura, escrita e execução para o Proprietário, o Grupo e os Outros.
  2. Ou digite diretamente um valor numérico de 3 dígitos (por ex. 755).
  3. A notação simbólica e o comando chmod são atualizados em tempo real.
  4. Clique em Copiar o comando para copiar o comando chmod completo.

Referência de permissões

Número Permissão Símbolo
0Nenhuma permissão---
1Somente execução--x
2Somente escrita-w-
3Escrita + execução-wx
4Somente leiturar--
5Leitura + execuçãor-x
6Leitura + escritarw-
7Leitura + escrita + execuçãorwx

Perguntas frequentes

O que significa chmod 755 ?

755 significa que o proprietário pode ler, escrever e executar (7), enquanto o grupo e os outros podem ler e executar mas não escrever (5). É a permissão mais comum para pastas e scripts.

Qual é a diferença entre 644 e 755 ?

644 (rw-r--r--) permite ao proprietário ler/escrever e a todos apenas ler · típico para arquivos. 755 (rwxr-xr-x) adiciona a permissão de execução · típico para pastas e scripts.

Isso funciona também para pastas ?

Sim. As permissões numéricas funcionam da mesma maneira. Para pastas, « execução » significa poder entrar na pasta e acessar seu conteúdo.

O modelo de permissões do Unix em 9 bits

Todo arquivo e diretório em um sistema do tipo Unix carrega um «modo», um pequeno inteiro que registra quem pode fazer o quê. O modelo está essencialmente inalterado desde o Sixth Edition Unix (maio de 1975), com as primeiras entradas de manual do chmod aparecendo no Version 1 Unix (novembro de 1971). Ele codifica nove bits de permissão organizados em três trios de leitura / escrita / execução, um trio para o proprietário do arquivo, um para o seu grupo e um para todos os demais:

Owner    Group    Others
r w x    r w x    r w x
4 2 1    4 2 1    4 2 1

Cada grupo de três bits é exatamente um dígito octal, porque três bits codificam 2³ = 8 valores distintos (0-7). Os pesos 4, 2, 1 são 2², 2¹, 2⁰. Somar qualquer combinação de leitura (4) + escrita (2) + execução (1) produz os oito dígitos possíveis por classe sem colisão; esse é todo o mapeamento de octal para simbólico. O chmod 755, portanto, significa rwx (4+2+1=7) para o proprietário, r-x (4+1=5) para o grupo e r-x para todos os demais.

A string de 10 caracteres que você vê no ls -l é o mesmo dado mais uma coluna extra na frente, para o tipo de arquivo: - para um arquivo comum, d para um diretório, l para um symlink, c para um dispositivo de caractere, b para um dispositivo de bloco, p para um pipe nomeado, s para um socket. Os nove caracteres restantes são os trios de permissão.

Notação simbólica: chmod u+x file

Os modos octais sobrescrevem todos os nove bits de uma vez. Os modos simbólicos não são destrutivos: eles só alteram os bits que você nomeia. A gramática é quem + op + perm:

Exemplos úteis:

Os modos numéricos são explícitos e idempotentes (chmod 755 sempre significa os mesmos nove bits). Os modos simbólicos são cirúrgicos (chmod g+w altera apenas um bit). Os scripts de produção tendem a preferir o numérico, pela clareza nos logs de auditoria; os operadores digitando no shell tendem a preferir o simbólico, para ajustes incrementais.

Modos comuns e para que servem

ModoSimbólicoUso típico
755rwxr-xr-xExecutáveis públicos e diretórios padrão, /usr/bin/*, docroots da web, árvores de trabalho do Git
644rw-r--r--Arquivos comuns padrão, configuração, código-fonte, documentos
700rwx------Diretório privado, ~/.ssh, documentos pessoais que ninguém mais deveria ver
600rw-------Arquivo privado, ~/.ssh/id_rsa, ~/.gnupg/*, arquivos de senha
444r--r--r--Somente leitura para todos, dados de referência fixos, índices de registro do Cargo
750rwxr-x---Proprietário total, grupo lê/atravessa, outros nada, diretório de serviço compartilhado pelo grupo
777rwxrwxrwxQuase sempre errado. Veja abaixo.

Por que chmod 777 está quase sempre errado

Definir um arquivo como 777 o torna legível, gravável e executável por todos. Qualquer usuário na máquina (incluindo contas de serviço sem privilégios e qualquer processo que venha a ser comprometido) pode ler o conteúdo do arquivo, modificá-lo e executá-lo. O conselho de tutorial padrão «é só dar chmod 777 até funcionar» é um antipadrão de segurança responsável por incontáveis brechas reais: arquivos de configuração graváveis por todos que são adulterados, diretórios web graváveis por todos que viram vetores de pichação, arquivos de log graváveis por todos que permitem a falsificação de logs, diretórios executáveis por todos que permitem a execução de código arbitrário.

Se um erro de permissão está te bloqueando, a correção certa quase sempre é mudar o proprietário do arquivo (com chown) ou o seu grupo (com chgrp), de modo que o usuário que precisa de acesso realmente seja dono ou codono do arquivo, e não remover os controles de acesso para todo mundo.

Bits especiais: setuid, setgid, sticky

Um quarto dígito octal colocado na frente do modo desbloqueia três bits especiais, todos relíquias do design original do Unix:

A exibição do ls -l troca o caractere de execução por s, S, t ou T quando esses bits estão definidos (as letras maiúsculas significam que o bit está definido, mas o bit de execução subjacente não).

umask: o inverso do chmod

O chmod define permissões em arquivos existentes. O umask determina as permissões padrão nos arquivos que você cria, atuando como uma máscara subtrativa. A aritmética: um novo arquivo comum seria 666 (rw-rw-rw-), um novo diretório 777, menos o que estiver definido no umask. Valores comuns:

Digitar umask sem argumentos mostra o valor atual. Defini-lo no init do seu shell (~/.bashrc, ~/.zshrc) ou em /etc/login.defs aplica-o à sessão inteira.

Arquivos vs. diretórios: significados diferentes do x

Os mesmos bits r/w/x significam coisas sutilmente diferentes em diretórios e em arquivos:

chmod recursivo e o padrão com find

O chmod -R 755 /var/www aplica o mesmo modo a todo arquivo e diretório na árvore, o que é quase sempre errado, porque arquivos e diretórios querem modos diferentes (por exemplo, 644 para arquivos, 755 para diretórios). O idioma correto usa o find:

find /var/www -type f -exec chmod 644 {} +
find /var/www -type d -exec chmod 755 {} +

Ou, de forma equivalente, usando o chmod do GNU com o X maiúsculo: o chmod -R u=rwX,go=rX /var/www concede execução apenas em diretórios e em arquivos que já tinham execução em algum lugar, exatamente o resultado que você geralmente quer.

Symlinks, ACLs e como o Linux estende o modelo

Dois refinamentos que vale a pena conhecer:

Mais perguntas

Por que minha chave SSH é rejeitada com «permissions are too open»?

Porque o cliente OpenSSH se recusa a usar uma chave privada que seja legível pelo grupo ou por todos, partindo do princípio de que qualquer coisa que outras pessoas possam ler não deveria ser uma credencial. A correção é chmod 600 ~/.ssh/id_rsa (e chmod 700 ~/.ssh no próprio diretório). A mesma lógica vale para ~/.gnupg/ e para a maioria dos outros armazenamentos de credenciais.

Qual é a diferença entre chmod e chown?

O chmod muda os bits de modo, o que o proprietário/grupo/outros podem fazer. O chown muda quem é o proprietário. Com frequência você precisa dos dois: um arquivo que «o usuário errado não consegue ler» geralmente não precisa ter suas permissões abertas; ele precisa pertencer ao usuário que precisa de acesso. Tente o chown myuser:mygroup file primeiro.

Devo usar 666 para arquivos de log?

Quase nunca. Arquivos de log graváveis por todos permitem que qualquer processo (incluindo um serviço comprometido rodando como um usuário de baixo privilégio) falsifique entradas de log ou apague o log. O padrão recomendado é tornar o diretório de log gravável por um grupo de log específico (adm no Debian, wheel no BSD, etc.) e adicionar os serviços relevantes a esse grupo, ou usar o logrotate + um daemon de log (rsyslog, systemd-journald) que cuida da propriedade dos arquivos para você.

Esta calculadora considera os bits especiais?

Não, ela cobre os nove bits de permissão básicos (o modo padrão de 3 dígitos). Para setuid (4xxx), setgid (2xxx) ou sticky (1xxx), você colocaria o dígito inicial na frente manualmente. A grande maioria do trabalho diário com chmod usa modos de 3 dígitos e nunca toca nos bits especiais.

Algo é enviado a um servidor?

Não. A conversão alternador ↔ octal ↔ simbólico é pura aritmética, calculada no seu navegador. A página funciona offline depois de carregada.

Ferramentas relacionadas

Gerador .htaccess Gerador de expressões Cron Calculadora de hash de arquivo gratuita