Ferramentas de desenvolvedor · Calculadora Chmod
Como ler as permissões ls -l e convertê-las para o modo octal
· Como funciona
chmod unix fluxo de trabalho do desenvolvedor
A sequência de dez caracteres no início de ls -l é um tipo de arquivo mais nove bits de permissão. Este post mostra como decodificá-lo e produzir o modo octal que o chmod deseja, incluindo as letras de bits especiais.
Um ticket com -rw-r-----+ colado — você precisa saber se deve dizer ao usuário para executar chmod 640 ou algo mais
Uma string colada como -rw-r-----+ contém mais do que este analisador aceita. O núcleo reconhecido é um corpo de permissão de nove caracteres, opcionalmente precedido por um caractere de tipo de arquivo compatível. O sinal de mais à direita torna a entrada muito longa e é rejeitada. A remoção desse marcador externo deixa -rw-r-----, que é convertido em 640: leitura do grupo proprietário read/write,, e nenhuma permissão para outro.
Essa conversão não decodifica o que o sinal de mais representa além do aviso do artigo 501 de que uma listagem longa pode usá-lo para ACLs. A calculadora não possui entradas ou máscara ACL. Ele também não inspeciona a máquina, o proprietário, o grupo ou o caminho do ticket. O modo 640 é, portanto, o valor base da permissão representado pelo núcleo aceito, e não uma resposta completa sobre o acesso efetivo.
O primeiro caractere é o tipo - traço, d, l, c, b, p e s, e por que não faz parte do modo
O primeiro caractere opcional é tratado como um marcador de tipo em vez de um bit de permissão. O analisador reconhece -, d, l, b, c, p, s, D e ?. Quando alguém aparece antes de nove posições de permissão válidas, ele é removido para aritmética. Somente o proprietário, o grupo e outros triplos resultantes determinam o valor octal e as seleções da matriz.
Este comportamento é fácil de verificar com entradas equivalentes. Ambos rwxr-x--- e -rwxr-x--- produzem 750 porque o traço inicial não contribui com nenhum bit de modo. Um marcador de diretório pode preceder o mesmo corpo e ainda produzir o mesmo número inteiro. O seletor de destino controla o texto explicativo separadamente, portanto, aceitar um caractere de tipo não significa que o navegador descobriu ou abriu esse objeto.
Nove caracteres em três grupos — proprietário, grupo, outros, sempre na ordem rwx, com um travessão para cada bit desativado
As nove posições de permissão formam três triplos fixos em proprietário, grupo e outras ordens. Dentro de cada triplo, ler ocupa a primeira posição, escrever a segunda e executar a terceira. Um traço significa que o bit correspondente está desativado. A validação específica da posição rejeita uma letra perdida em vez de adivinhar, portanto, um r em uma posição de gravação não pode se tornar silenciosamente outra permissão.
Cada triplo aceito é mapeado para um dígito octal pelos pesos no artigo 501: leitura é 4, gravação é 2 e execução é 1. A matriz mostra os mesmos sinalizadores das caixas de seleção e reconstrói o número inteiro quando um deles muda. Letras especiais são aceitas apenas em posições de execução, preservando setuid, setgid ou sticky junto com o estado de execução subjacente.
Exemplo resolvido: -rwxr-x--- a 750 — atribuindo 4, 2, 1 a cada letra e somando por grupo
Converta -rwxr-x--- ignorando o marcador de tipo inicial e dividindo o corpo em rwx, rx e ---. O proprietário tem 4+2+1, produzindo 7. O grupo possui 4+1, produzindo 5. Outro não possui bit habilitado, produzindo 0. A calculadora retorna 750 e seleciona as nove caixas de permissão comuns correspondentes.
A verificação reversa deve cair no mesmo corpo do texto. Digite 750 e o campo simbólico se torna rwxr-x---; escolha um marcador de arquivo normal para o formulário exibido e ele se tornará -rwxr-x---. A visualização da tarefa tem uma sintaxe diferente: u=rwx,g=rx,o=. Todas as três visões descrevem um modo fixo, enquanto a propriedade e a sabedoria de aplicá-lo permanecem sem solução.
Os sinais de adição e arroba à direita - as entradas + significando ACL existem, o @ significando atributos estendidos no macOS, nenhum deles fazendo parte do modo
Os sinais de adição e arroba à direita são marcadores de metadados no esboço, mas o fato implementado é mais restrito: esse analisador rejeita ambos porque a entrada aceita termina após o corpo da permissão. O artigo 501 identifica especificamente um sinal de adição final com ACLs. CHMOD_SOURCES não fornece nenhuma interpretação equivalente para uma arroba, portanto esta seção não atribui a ele um significado de sistema operacional não suportado pelo repositório.
Não remova nenhum marcador cegamente quando o acesso eficaz for importante. Em vez disso, separe o núcleo de nove ou dez caracteres aceito para conversão no modo base e investigue qualquer restante com evidências do sistema de origem. A calculadora pode mostrar que rw-r----- significa 640. Ele não pode explicar metadados adicionais, ler atributos estendidos ou determinar se outro mecanismo de controle de acesso altera o que um usuário ou processo pode fazer.
Os sinais de adição e arroba à direita são marcadores de metadados que este analisador rejeita
Comandos estatísticos externos não são executados pela calculadora do navegador. A página não tem acesso ao executor de comandos ou ao sistema de arquivos; seu campo de caminho existe apenas para construir texto chmod entre aspas para exibição. Conseqüentemente, ele não pode buscar um modo atual, comparar a saída de comandos específicos da plataforma ou certificar que uma string colada veio de um utilitário específico. O usuário deve fornecer o valor a ser convertido.
Depois que um modo confiável é fornecido, o navegador fornece uma verificação de representação independente. Insira o núcleo simbólico e compare seu resultado octal, matriz, resumo e visualização da tarefa. O acordo detecta erros de transcrição e aritméticos no formato suportado. Não valida o comando de coleta externa, não revela a propriedade nem prova que as permissões representadas são efetivas no objeto do qual o texto foi copiado.
Comandos estatísticos externos não são executados pela calculadora do navegador
A decodificação ACL permanece fora da rota. Seu modelo contém proprietário, grupo, outro e três bits especiais, sem entradas nomeadas ou máscara ACL. A decodificação de permissão do Windows também está ausente: não há modelo de identidade do Windows, sintaxe de entrada de controle de acesso ou descoberta de plataforma. Um núcleo estilo Unix de nove posições pode ser convertido, mas nenhum sistema de permissão adicional pode ser reconstruído a partir desse resultado.
Esse limite também limita o diagnóstico. Um modo básico que parece suficiente não prova que uma ACL ou outra política seja irrelevante, enquanto um modo restritivo não identifica todas as concessões possíveis. A calculadora liquida apenas os doze bits representados. Use sua saída para declarar o modo comum com precisão e, em seguida, reserve reivindicações sobre autorização efetiva para ferramentas e documentação que realmente exponham o sistema de permissão externo.
ACL e a decodificação de permissão do Windows permanecem fora da rota
A leitura de um modo estilo ls torna-se mecânica quando o núcleo aceito é isolado. Elimine um caractere de tipo inicial reconhecido, divida as nove posições restantes em proprietário, grupo e outro, e leia o total 4, escreva 2 e execute 1 dentro de cada triplo. A calculadora realiza essa conversão e valida letras específicas de posição, incluindo os formulários s, S, t e T implementados.
Mantenha a conclusão proporcional à entrada. Uma conversão bem-sucedida prova que a string aceita é mapeada consistentemente para um modo octal, matriz, resumo e atribuição gerada. Ele não executa stat, inspeciona o caminho, decodifica um marcador final, identifica propriedade ou aplica chmod. Esses limites tornam o resultado útil: ele é exato em relação à aritmética do modo base e silencioso em relação às evidências que nunca coletou.