BrowserTools
Início / Calculadoras / Calculadora chmod

Calculadora chmod

Calcula permissões de ficheiros Unix em números como 755 ou letras como rwxr-xr-x, e vê o que permitem.

A carregar Calculadora chmod… Se nada acontecer, ativa o JavaScript.

Cada ficheiro e pasta em Linux, macOS e outros sistemas do tipo Unix tem três conjuntos de permissões: um para o dono, um para o grupo e um para toda a gente. Cada conjunto pode permitir ler, escrever e executar, e o chmod é o comando que os altera. Esta calculadora mostra as mesmas permissões em todas as formas que encontras na prática. Marca as caixas na grelha, escreve um número como 644 ou 2775, ou cola as letras do ls -l como drwxr-sr-x, e as outras duas formas atualizam-se de imediato. Por baixo tens comandos chmod prontos a copiar, em forma numérica e simbólica (chmod 755 file e chmod u=rwx,g=rx,o=rx file), com nome de ficheiro opcional e a opção recursiva -R.

Perguntas frequentes

O que significa chmod 755?
Cada algarismo corresponde a uma classe: dono, grupo, outros. 7 é leitura (4) mais escrita (2) mais execução (1), e 5 é leitura mais execução. Assim, 755 deixa o dono fazer tudo, enquanto o grupo e os restantes podem ler e executar o ficheiro, ou listar e entrar na pasta, mas não alterá-lo. Em letras fica rwxr-xr-x. É o modo habitual para programas, scripts e pastas web.
Qual é a diferença entre 644 e 755?
Em ambos só o dono pode escrever. 644 (rw-r--r--) não dá permissão de execução a ninguém, o que serve para documentos, imagens, configurações e páginas web. 755 acrescenta execução às três classes, algo de que os programas precisam para correr e as pastas para se poder entrar nelas. Pastas com 644 não podem ser abertas de todo, uma causa frequente de erros "Permission denied".
O que querem dizer s, S, t e T nas permissões?
Um s minúsculo na posição de execução do dono significa setuid mais execução, e na do grupo significa setgid mais execução. Um t minúsculo na posição dos outros significa sticky bit mais execução. As maiúsculas S e T indicam que o bit especial está ativo mas a execução não, o que normalmente torna o bit inútil num ficheiro. Por exemplo, 4755 é rwsr-xr-x e 1777 é rwxrwxrwt.
Para que servem o setuid, o setgid e o sticky bit?
O setuid faz um programa correr com as permissões do dono do ficheiro e não do utilizador que o inicia, e é assim que o passwd consegue atualizar a base de dados de palavras-passe. O setgid faz o mesmo para o grupo e, numa pasta, faz com que os novos ficheiros herdem o grupo da pasta. O sticky bit numa pasta significa que só o dono de um ficheiro, o dono da pasta ou o root o podem apagar ou mudar de nome, e é por isso que o /tmp tem 1777.
Porque devo evitar chmod 777?
O 777 deixa qualquer conta da máquina, incluindo o servidor web e qualquer serviço comprometido, alterar ou substituir o ficheiro. Numa pasta deixa também qualquer pessoa apagar ficheiros alheios. Muitas vezes esconde o verdadeiro problema, que costuma ser o dono ou o grupo errado. Corrige a propriedade com chown e usa 755 ou 775 para pastas e 644 ou 664 para ficheiros.
Como dou permissões diferentes a ficheiros e pastas de forma recursiva?
O chmod -R aplica um só modo a tudo, por isso os ficheiros ficariam com execução tal como as pastas. Usa antes o find: find caminho -type d -exec chmod 755 {} + para as pastas e find caminho -type f -exec chmod 644 {} + para os ficheiros. O modo simbólico também tem um atalho: chmod -R u=rwX,go=rX caminho, em que o X maiúsculo só dá execução às pastas e aos ficheiros que já são executáveis.
O que é o umask?
O umask é um conjunto de bits retirados às permissões por omissão quando um programa cria algo novo. Os ficheiros partem de 666 e as pastas de 777, e cada bit do umask é removido. Com o umask habitual 022, os novos ficheiros ficam com 644 e as novas pastas com 755. Com 077 ficam com 600 e 700, e só tu lhes consegues aceder. Corre umask num terminal para veres o teu valor atual.
O chmod 755 numa pasta apaga o bit setgid?
Não com o chmod do GNU em Linux. Nas pastas mantém os bits setuid e setgid existentes quando indicas um modo numérico, para que pastas partilhadas não percam a herança de grupo por engano. Para os limpar, usa o modo simbólico, como chmod g-s pasta, ou um modo numérico com um zero extra à frente, como chmod 00755 pasta. Outros sistemas podem comportar-se de outra forma, por isso confirma depois com ls -l.

Sobre Calculadora chmod

Os números são octais: cada algarismo é a soma de leitura (4), escrita (2) e execução (1) para uma classe, por isso 7 quer dizer as três, 6 leitura e escrita, 5 leitura e execução e 4 só leitura. Um quarto algarismo à frente guarda os bits especiais: 4 para setuid, 2 para setgid e 1 para o sticky bit. Na forma em letras aparecem nas posições de execução como s ou t, e como S ou T maiúsculos quando o bit especial está ativo sem a permissão de execução por baixo. A calculadora entende todos estes casos, e o painel de explicação diz em linguagem simples o que o dono, o grupo e os restantes podem de facto fazer. Alterna entre File e Directory, porque os mesmos bits significam coisas diferentes: numa pasta, a leitura deixa listar os nomes, a escrita deixa criar e apagar ficheiros e a execução deixa entrar nela e chegar aos ficheiros lá dentro.

As predefinições comuns cobrem os casos do dia a dia: 644 para ficheiros normais, 755 para scripts e pastas, 600 e 700 para chaves e pastas privadas, 664 e 775 para trabalho em grupo, 400 para segredos só de leitura e 1777 para pastas temporárias partilhadas. A ferramenta avisa quando um modo é arriscado, por exemplo 777, pastas com escrita para todos sem sticky bit ou um programa setuid que outros podem alterar. Há também uma calculadora de umask: escreve um umask como 022 ou 077 e vê as permissões com que os novos ficheiros (a partir de 666) e as novas pastas (a partir de 777) vão ficar. Tudo é calculado no teu navegador.

O sticky bit já serviu para manter programas em memória

O sticky bit ganhou o nome nos primeiros Unix, muito antes de ter alguma coisa a ver com pastas partilhadas. Num ficheiro de programa, dizia ao sistema para manter o código do programa na área de swap depois de terminar, para que comandos muito usados, como o editor ou a shell, arrancassem mais depressa da vez seguinte. Dizia-se que o programa ficava colado.

Com a melhoria da memória virtual e das caches de páginas, o truque deixou de ser útil e a maioria dos sistemas passou a ignorar o bit nos ficheiros. Nos anos 1980 recebeu uma nova função nas pastas: só o dono de um ficheiro o pode apagar ou mudar de nome, mesmo que a pasta tenha escrita para todos. É esse o significado que tem hoje, e a razão pela qual qualquer sistema Linux ou macOS mostra um t no fim de drwxrwxrwt para o /tmp.

Apoiar