FreeToGenerate.com

Um bit setuid sem permissão de execução aparece como um S maiúsculo: ligado, e sem fazer nada. Dois em cada três modos com bit especial têm um assim.

LeituraEscritaExecução
Proprietário
Grupo
Outros

Corre o ficheiro como o seu proprietário e não como quem o lançou. Num diretório, no Linux não faz nada.

Corre o ficheiro como o seu grupo. Num diretório, os ficheiros novos herdam esse grupo em vez do de quem os cria.

Num diretório, só o dono de um ficheiro o pode apagar — é isso que torna seguro um /tmp partilhado. Num ficheiro normal é ignorado.

0755
rwxr-xr-x
chmod 0755 filename

Octal de três ou quatro dígitos, ou o campo de permissões do ls -l, com ou sem o carácter de tipo inicial.

O que uma umask deixa ficar

Uma umask só tira permissões, nunca as dá. A mesma umask deixar um ficheiro em 644 e um diretório em 755 não é obra da umask: é que os programas pedem 666 e 777 respetivamente, e a umask subtrai a cada um.

Ficheiro novo
644
Diretório novo
755

Também disponível em: English · Español · Français · العربية

Calculadora chmod

De permissões para octal e de volta, com a saída do ls, o comando pronto a copiar e um aviso quando liga um bit especial que não tem sobre o que agir.

O que é uma calculadora chmod?

Num sistema Unix cada ficheiro carrega nove bits de permissão: leitura, escrita e execução, para o proprietário, para o grupo e para todos os outros. O comando chmod define-os, e recebe-os como um número octal — os célebres 755 ou 644. Uma calculadora chmod converte as caixas em que está a pensar no número que o chmod quer, e também ao contrário.

Acima desses nove há mais três bits. O setuid e o setgid fazem um programa correr como o proprietário ou o grupo do ficheiro em vez de como quem o lançou; o bit sticky, num diretório, impede que uns apaguem os ficheiros dos outros, que é precisamente a razão por que um /tmp partilhado é seguro. Esses três formam o dígito da frente, portanto 1777 é o /tmp e 4755 é um binário setuid.

Esta calculadora funciona nos dois sentidos. Marque as caixas e leia o número, ou cole um modo — 755, 4755, rwxr-xr-x, ou o campo de permissões inteiro copiado do ls -l com o seu d inicial — e as caixas ajustam-se sozinhas.

Como usar

  1. Marque as permissões que quer. Nove caixas para as permissões normais e três para os bits especiais. O número octal e a representação do ls vão sendo atualizados.
  2. Copie o comando, não só o número. A linha de comandos sai já escrita e pronta a colar, portanto não há nada para voltar a montar.
  3. Ou cole um modo que já tenha. Octal ou simbólico, ambos servem. É este o sentido que quer quando está a ler uma listagem do ls ou um Dockerfile e a tentar perceber o que aquilo permite de facto.

A letra maiúscula que quer dizer que o bit não faz nada

Cada bit especial modifica um bit de execução. O setuid modifica o do proprietário, o setgid o do grupo e o sticky o dos outros. Se ligar um bit especial com o respetivo bit de execução desligado, o bit fica posto e não tem sobre o que agir — e o ls diz-lho escrevendo uma letra maiúscula em vez de uma minúscula. O 4755 aparece como rwsr-xr-x; o 4644 aparece como rwSr--r--, com S maiúsculo.

Não é um canto raro. Dos 3584 modos possíveis que levam pelo menos um bit especial, 2368 — 66,1 por cento — mostram pelo menos uma maiúscula. Por bit é exatamente metade, porque um bit especial e o bit de execução que ele modifica são postos de forma independente um do outro. Esse número não é uma estimativa: o espaço todo são apenas 4096 modos, portanto foram todos convertidos e verificados em vez de se tirar uma amostra.

Quase todas as calculadoras chmod escrevem um s ou um t minúsculo aconteça o que acontecer, o que transforma em silêncio um erro em algo com ar de correto. Esta mostra a maiúscula e diz qual o bit inerte e porquê.

Um aviso no sentido contrário, já que é a coisa que se conta mal: o significado do bit sticky depende daquilo a que está posto. Num diretório restringe o apagamento, que é o que se quer. Num ficheiro normal, todos os sistemas hoje em uso o ignoram.

Limites honestos, e a questão da umask

Uma umask não é uma permissão, é uma máscara de permissões a retirar, e só consegue subtrair. É por isso que a mesma umask 022 deixa um ficheiro novo em 644 e um diretório novo em 755 — a diferença não está na umask, está em que os programas pedem 666 ao criar um ficheiro e 777 ao criar um diretório, e a umask tira os mesmos bits a cada um. O painel aqui mostra os dois resultados para que a assimetria se veja em vez de surpreender.

O que esta página não lhe consegue dizer é se um modo é seguro no seu sistema, porque isso depende de coisas que o número não contém: quem é o dono do ficheiro, que grupos existem, se um diretório acima sequer deixa lá chegar, e se o SELinux ou o AppArmor têm alguma opinião. Um 777 num ficheiro dentro de um diretório que ninguém pode atravessar é inalcançável; um 644 num ficheiro dentro de um diretório onde toda a gente escreve pode na mesma ser substituído.

Também não modela ACLs. Se um ficheiro tiver listas de controlo de acesso alargadas, o ls escreve um sinal de mais no fim do campo de permissões e os nove bits deixam de ser a história toda. Esta calculadora lê os nove bits e os três especiais, e mais nada — que é o âmbito honesto de uma calculadora de modos.

Por fim, isto é semântica Unix. As permissões do Windows são um modelo completamente diferente, e um número produzido aqui não significa nada lá.

Porque é grátis

Porque não custa nada manter. A aritmética acontece no seu navegador; não se envia nada, não há servidor pelo meio e não há conta nenhuma.

A representação é verificada contra as próprias regras do sistema operativo e não contra outra calculadora: os 4096 modos possíveis são comparados com a saída de uma implementação conforme ao POSIX, e o teste que o faz está guardado ao lado do código.