Ferramentas de desenvolvedor · Calculadora Chmod
Modo simbólico chmod explicado: u+x, gw, o=r e a+rX
· Como funciona
chmod unix fluxo de trabalho do desenvolvedor
A forma simbólica de chmod é uma pequena gramática: quem, operador, quais bits. Esta postagem desmonta tudo para que u+x e go-rwx se tornem óbvios e mostre quando o simbólico vence o octal.
Um script de implantação cheio de letras — chmod u+x,go-w deploy.sh funciona, mas ninguém na equipe pode dizer o que isso muda
Um comando como u+x se parece com a exibição simbólica da calculadora, mas os dois formulários têm funções diferentes. O campo simbólico editável aceita nove posições de permissão, opcionalmente precedidas por um caractere de tipo de arquivo reconhecido. Por outro lado, o argumento chmod gerado especifica atribuições completas com cláusulas u=, g= e o=, portanto representa um modo fixo em vez de analisar uma mudança relativa.
Inserir 750 torna a distinção concreta. A exibição é rwxr-x---, enquanto a atribuição gerada é u=rwx,g=rx,o=. Ambos descrevem o mesmo proprietário, grupo e outros bits, mas apenas o segundo é formatado como argumento chmod. A página nunca executa esse comando. Ele expõe a representação para que o valor proposto possa ser revisado antes de qualquer ação separada do shell.
A calculadora separa uma exibição no estilo ls da lista de atribuições que ela gera
As letras u, g e o aparecem na tarefa gerada porque identificam proprietário, grupo e outros. Cada saída nomeia explicitamente todas as três classes, incluindo uma cláusula vazia quando uma classe não tem permissões. A calculadora não analisa gramática omitida ou taquigrafia. Sua entrada começa a partir de um modo concluído, não de instruções cujo resultado depende de um alvo existente.
Esta correção evita uma reivindicação exagerada sutil. A matriz pode mostrar exatamente qual classe recebe leitura, gravação ou execução, mas não pode decidir o que significaria um seletor de classe omitido em outra implementação de chmod. Compare as três colunas da matriz com as três cláusulas de atribuição. O acordo deles verifica o valor fixo sem depender de regras de comando relativo que esta interface não implementa.
Quem aparecem nas tarefas geradas; relativa omitida - cuja gramática não é analisada
O gerador de atribuição usa = para cada classe comum. Essa escolha reconstrói exatamente o proprietário, o grupo e outros triplos solicitados, incluindo a limpeza de uma classe emitindo um lado direito vazio. Embora + e - pertençam a comandos simbólicos chmod, eles não são aceitos como entrada da calculadora. A página, portanto, não modela adições ou remoções incrementais de um modo inicial desconhecido.
Uma comparação de um bit mostra o que o fluxo de trabalho suportado pode provar. O modo 750 renderiza rwxr-x---; alterar o dígito do grupo para 7 produz rwxrwx--- e altera g=rx para g=rwx. A calculadora identifica os modos antes e depois concluídos. Ele não avalia g+w em relação a um arquivo ativo, porque nenhum modo, caminho, sistema de arquivos ou execução de comando atual participa da conversão.
O operador gerado é =, enquanto a gramática de entrada + e - permanece fora da ferramenta
O analisador reconhece r e w em suas posições fixas, mais x ou - em posições de execução comuns. Também aceita s, S, t e T onde bits especiais compartilham essas posições. X maiúsculo é diferente: pertence à gramática chmod relativa e não é suportado aqui. O fornecimento de X é rejeitado em vez de ser interpretado silenciosamente como um bit de execução comum.
Letras especiais minúsculas e maiúsculas são implementadas deliberadamente. Setuid e setgid usam s quando seu bit de execução correspondente está presente e S quando está ausente; sticky usa t ou T pela mesma regra na posição de outra execução. A linha especial e o resumo de quatro dígitos preservam esses bits. Nada disso adiciona suporte para seleção condicional de X maiúsculo em arquivos e diretórios.
O analisador aceita r, w, x, s, S, t e T; X maiúsculo não é suportado
Expressões de cópia de classe como g=u não são implementadas. A calculadora nunca lê uma classe fonte de um objeto existente ou aplica os bits de uma classe a outra. Ele recebe um modo octal completo ou estilo ls, converte esse valor em booleanos nomeados e emite sinalizadores explícitos para cada classe. Qualquer resultado copiado deve ser calculado em outro lugar antes que esta página possa inspecioná-lo.
Suponha que uma etapa externa determine que o proprietário e o grupo devem ter rwx enquanto outro não tem nenhum. Inserir 770 resulta em rwxrwx--- e u=rwx,g=rwx,o=. Isso confirma o resultado concluído, mas não prova como ele foi derivado. A propriedade também permanece desconhecida: o conversor rotula as classes sem identificar o verdadeiro proprietário, grupo ou processo que encontraria o alvo.
A cópia de permissões entre classes não está implementada
O modo 0750 é aceito com seu zero à esquerda e analisado como o mesmo valor de 750. O dígito proprietário 7 ativa leitura, gravação e execução; dígito do grupo 5 ativa leitura e execução; o outro dígito 0 não ativa nada. A exibição sincronizada torna-se rwxr-x--- e o resumo sempre de quatro dígitos mantém 0750 visível como um valor de revisão inequívoco.
A atribuição simbólica gerada para esse modo fixo é u=rwx,g=rx,o=. Suas três cláusulas correspondem diretamente às colunas da matriz, enquanto a visualização do comando octal usa 750, a menos que um bit especial exija um quarto dígito. Um caminho fornecido pode ser citado na visualização, mas nunca é aberto. O exemplo verifica a representação, não a propriedade, a autorização ou uma alteração de permissão bem-sucedida.
Exemplo resolvido: 0750 como modo fixo e lista de atribuições gerada
Alterações baseadas em referência, manipulação de links simbólicos e operações ACL permanecem fora deste conversor. Não há entrada de arquivo de referência, passagem de caminho, modelo de entrada ACL ou consulta de sistema de arquivos na página. Selecionar recursão apenas adiciona um sinalizador -R exibido. Conseqüentemente, o comando gerado não pode informar quais objetos seriam alcançados ou se outra camada de controle de acesso altera o resultado efetivo.
A entrada inválida fornece uma verificação de limite útil. Uma carta de permissão mal colocada, um X não suportado, um marcador final ou um dígito octal malformado são rejeitados em vez de reparados. A correção do texto para uma exibição suportada de nove caracteres produz um modo e visualizações sincronizadas. Essa aceitação prova apenas que a string é mapeada para os doze bits implementados; ele não valida um recurso chmod externo ou ambiente de destino.
As operações de referência, link simbólico e ACL permanecem fora deste conversor
A distinção prática é entre uma exibição no estilo ls e uma atribuição fixa gerada, não entre a entrada simbólica como relativa e a entrada octal como absoluta. Ambos os formulários editáveis representam um modo concluído. A calculadora converte qualquer um deles no mesmo número inteiro, matriz, resumo, explicação e visualizações e, em seguida, emite cláusulas explícitas u=, g= e o= para o formulário de comando simbólico.
Use essas visualizações sincronizadas para detectar erros aritméticos. Se 750, rwxr-x--- e u=rwx,g=rx,o= aparecerem juntos, o modo fixo é internamente consistente. Pare aí, a menos que o sistema real forneça mais evidências. A página não analisa operadores relativos, seletores omitidos, cópia de classe ou X maiúsculo e não pode determinar se o modo aborda a operação real com falha.