Calculadora Chmod
Calculadora interativa de permissões de arquivos Linux/Unix.
chmod 000 filename
Permissões comuns
Como usar
- Marque as caixas para definir as permissões de leitura, escrita e execução para o Proprietário, o Grupo e os Outros.
- Ou digite diretamente um valor numérico de 3 dígitos (por ex. 755).
- A notação simbólica e o comando
chmodsão atualizados em tempo real. - Clique em Copiar o comando para copiar o comando chmod completo.
Referência de permissões
| Número | Permissão | Símbolo |
|---|---|---|
| 0 | Nenhuma permissão | --- |
| 1 | Somente execução | --x |
| 2 | Somente escrita | -w- |
| 3 | Escrita + execução | -wx |
| 4 | Somente leitura | r-- |
| 5 | Leitura + execução | r-x |
| 6 | Leitura + escrita | rw- |
| 7 | Leitura + escrita + execução | rwx |
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:
- quem:
uusuário/proprietário,ggrupo,ooutros,atodos (= ugo). - op:
+adiciona,-remove,=define exatamente (e limpa os demais). - perm:
r,w,x, mais as letras especiaisX(executar apenas se o alvo for um diretório ou já for executável em pelo menos uma classe),s(setuid / setgid),t(sticky / exclusão restrita). Você também pode copiar de outra classe comu,g,o: por exemplo,g=udefine as permissões do grupo idênticas às do proprietário.
Exemplos úteis:
chmod u+x script.sh: adiciona execução apenas para o proprietário.chmod g-w shared.log: remove a escrita para o grupo.chmod a=rw note.txt: define todos para leitura/escrita, limpa a execução para todos.chmod o= secret.key: limpa todos os bits para «outros».chmod -R u+rwX,go+rX /var/www: concede recursivamente acesso total ao proprietário e leitura aos demais; oXmaiúsculo adiciona execução apenas em diretórios ou arquivos que já a tenham em alguma classe, evitando tornar acidentalmente executável todo arquivo de texto.
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
| Modo | Simbólico | Uso típico |
|---|---|---|
| 755 | rwxr-xr-x | Executáveis públicos e diretórios padrão, /usr/bin/*, docroots da web, árvores de trabalho do Git |
| 644 | rw-r--r-- | Arquivos comuns padrão, configuração, código-fonte, documentos |
| 700 | rwx------ | Diretório privado, ~/.ssh, documentos pessoais que ninguém mais deveria ver |
| 600 | rw------- | Arquivo privado, ~/.ssh/id_rsa, ~/.gnupg/*, arquivos de senha |
| 444 | r--r--r-- | Somente leitura para todos, dados de referência fixos, índices de registro do Cargo |
| 750 | rwxr-x--- | Proprietário total, grupo lê/atravessa, outros nada, diretório de serviço compartilhado pelo grupo |
| 777 | rwxrwxrwx | Quase 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:
- 4xxx, setuid (set user ID). Quando definido em um executável, o programa roda com os privilégios do proprietário, em vez dos de quem o invoca. O exemplo clássico é o
passwd: todo usuário pode executá-lo, mas só porque ele é setuid-root é que consegue escrever em/etc/shadow. O setuid é uma grande superfície de segurança; o Linux moderno cada vez mais o substitui por file capabilities (bits de permissão mais granulares viasetcap), e muitas distribuições estão removendo progressivamente os bits setuid. - 2xxx, setgid (set group ID). Em um executável, roda com o grupo do arquivo; em um diretório, os arquivos criados dentro herdam o grupo do diretório, em vez do grupo primário de quem os criou, útil para diretórios de projeto compartilhados.
- 1xxx, sticky bit. Em um diretório, apenas o proprietário do arquivo (ou o root) pode apagar ou renomear os arquivos dentro dele, independentemente da permissão de escrita no próprio diretório. O uso canônico é o
/tmp: gravável por todos, para que qualquer usuário possa criar arquivos, mas o sticky bit impede que os usuários apaguem os arquivos uns dos outros.
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:
- umask 022 (o padrão na maioria das distribuições Linux), remove a escrita do grupo e dos outros. Os novos arquivos terminam em 644, os novos diretórios em 755.
- umask 002 (padrão em alguns ambientes de desenvolvimento compartilhado), remove a escrita apenas dos outros. Novos arquivos em 664, diretórios em 775. Útil quando uma equipe de desenvolvimento quer ler e editar os arquivos uns dos outros.
- umask 077 (comum em servidores privados e configurações preocupadas com segurança), remove todas as permissões do grupo e dos outros. Novos arquivos em 600, diretórios em 700.
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:
- Leitura em um diretório: listar seu conteúdo. Sem leitura, você ainda pode acessar um nome de arquivo conhecido dentro do diretório se tiver execução, mas o
lsnão vai funcionar. - Escrita em um diretório: criar, apagar ou renomear entradas dentro dele. Observação: isso é independente da permissão de escrita nos arquivos em si. A escrita no diretório mais o sticky bit (1xxx) é o que permite diretórios compartilhados multiusuário controlados, como o
/tmp. - Execução em um diretório: atravessá-lo (entrar nele com
cd, acessar entradas nomeadas dentro). Um diretório sem execução é, na prática, um beco sem saída. Muitos problemas sutis de «permission denied» vêm dessa distinção: você tem leitura em um diretório profundo, mas não execução em um de seus pais, então não consegue alcançá-lo.
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:
- Os symlinks têm seu próprio modo (sempre 777), mas ele é ignorado. O
chmodsegue o link e modifica o alvo por padrão. Usechmod -hno BSD ouchmod --no-dereferenceno GNU para operar no próprio link, embora raramente haja motivo para isso. - As ACLs POSIX (
setfacl,getfacl) estendem o modelo básico com entradas por usuário e por grupo. Um arquivo pode conceder escrita a um usuário específico sem tocar nos bits de modo padrão. Ols -lmostra um+ao final nos arquivos com ACLs. macOS, a maioria dos sistemas de arquivos Linux e os BSDs todos os suportam; são opcionais e muitos administradores de sistema preferem ficar com o modo clássico, mais simples. - As ACLs NTFS do Windows são ainda mais ricas: entradas por usuário / por grupo com bits explícitos de permitir / negar e herança herdável. O modelo do
chmodnão se traduz diretamente. Cygwin e WSL o emulam de forma imperfeita sobre o NTFS.
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.