Português (Brasil)

Ferramentas de desenvolvedor · Calculadora Chmod

O quarto dígito chmod: como setuid, setgid e o sticky bit funcionam

· Como funciona

chmod unix fluxo de trabalho do desenvolvedor

bits especiais mostrados como um diagrama de bits de permissão Unix distinto
Ilustração vetorial original ToolAcre

Modos como 4755 e 2775 carregam um dígito inicial que altera quem um programa é executado ou quem possui novos arquivos. Esta postagem explica os três bits especiais e como eles aparecem em ls -l.

O s em drwxrwsr-x — um diretório de projeto compartilhado se comporta de maneira diferente e a saída ls tem uma letra que não está na folha de dicas básica

O s em rwxrwsr-x registra dois fatos em uma posição: setgid está habilitado e a execução de grupo também está habilitada. A implementação armazena setgid como octal 2000 e, em seguida, substitui s pelo caractere de execução de grupo. Com um marcador de tipo de diretório selecionado, o modo 2775 aparece como drwxrwsr-x enquanto o resumo de quatro dígitos preserva o dígito inicial do bit especial.

Essa saída é uma conversão, não uma observação do sistema de arquivos. O seletor de destino altera a forma como a página explica os bits, mas nunca abre um diretório ou examina a propriedade. Para um diretório, a explicação implementada diz que os arquivos recém-criados herdam o grupo do diretório. Se um determinado sistema de armazenamento aplica esse comportamento ou se outra política afeta o acesso, são necessárias evidências além desta calculadora.

O quarto dígito e suas letras - 4, 2 e 1 como um prefixo no modo familiar, mostrado como s e t na posição de execução, maiúsculo quando o bit de execução abaixo está desativado

O dígito octal inicial combina três máscaras independentes: setuid é 4000, setgid é 2000 e sticky é 1000. Suas letras ocupam posições de execução existentes em vez de adicionar caracteres à exibição de nove posições. Setuid usa a posição do proprietário, setgid a posição do grupo e sticky a outra posição. A matriz expõe todos os três separadamente da leitura, gravação e execução comuns.

Case revela o bit de execução subjacente. O modo 4755 renderiza rwsr-xr-x porque a execução do proprietário acompanha setuid; 4644 renderiza rwSr--r-- porque isso não acontece. O analisador lê ambos os formulários de volta nos bits especiais e de execução correspondentes. A mesma regra inferior versus superior produz s ou S para setgid e t ou T para sticky, preservando todas as combinações durante viagens de ida e volta.

setuid em executáveis ​​— como /usr/bin/passwd é executado com os privilégios do proprietário do arquivo e por que o Linux ignora setuid em scripts interpretados

Para um arquivo normal, a explicação do setuid implementada depende da execução do proprietário. Quando ambos os bits estão presentes, a página diz que a execução do arquivo usa a identidade do proprietário do arquivo em vez da identidade do chamador. Quando setuid está presente sem a execução do proprietário, o display usa S maiúsculo e explica que não há nada para executar. Este é o escopo corrigido e baseado na fonte da seção.

A calculadora não identifica um executável específico, não inicia um ou inspeciona como uma plataforma trata os scripts. Sua evidência é o modo fornecido e a escolha do alvo. O modo 4755 pode ser decomposto em setuid mais rwxr-xr-x, e a visualização da atribuição anexa u+s após as cláusulas comuns. Isso verifica apenas a renderização e a explicação; a adequação do programa e a execução real permanecem questões externas.

renderização setuid e explicação para arquivos regulares

Setgid em um diretório é representado independentemente das permissões de grupo comuns. O modo 2775 combina a máscara 2000 com o proprietário e grupo 7 e outros 5. A exibição rwxrwsr-x mantém a leitura, gravação e execução do grupo enquanto substitui o x visível por s. A explicação do diretório associa o bit especial à herança do grupo do diretório para arquivos recém-criados.

Remover a execução do grupo enquanto mantém o setgid altera a letra da posição do grupo para S maiúsculo. Esse aviso visível segue diretamente do renderizador, independentemente do texto de destino. A página pode comparar esses valores concluídos e mostrar qual caixa de seleção foi alterada, mas não pode inspecionar um diretório compartilhado, seu grupo atual ou as identidades que criam entradas. A concordância entre os pontos de vista é uma evidência aritmética e não uma aprovação operacional.

O problema dos diretórios - exclusão restrita em /tmp e por que 1777 não é o mesmo que 777

Sticky ocupa a posição de outra execução e contribui com octal 1000. Para o modo de diretório 1777, todas as permissões comuns permanecem habilitadas e o caracter simbólico final torna-se t. A explicação do diretório implementada adiciona uma restrição de exclusão e renomeação, enquanto a explicação 777 avisa sobre um diretório gravável sem fixação. Assim, o conversor torna visível a diferença de um bit sem alterar os triplos rwx subjacentes.

Se sticky estiver presente sem outra execução, o caractere final será T maiúsculo. O analisador e o renderizador preservam essa distinção em ambas as direções. A página não inspeciona um diretório compartilhado real, proprietários de entradas ou tentativa de exclusão. Sua conclusão confiável é mais restrita: o inteiro fornecido contém sticky, seu companheiro de execução é visível através de maiúsculas e minúsculas e um texto explicativo orientado ao diretório é selecionado.

Exemplo resolvido: construindo 2775 para um diretório compartilhado - derivando os dígitos e o equivalente simbólico chmod g+s,a+rwx,o-w

Construa 2775 como quatro componentes visíveis: dígito especial 2 para setgid, dígito proprietário 7 para rwx, dígito de grupo 7 para rwx e outro dígito 5 para rx. Inserir o valor concluído produz rwxrwsr-x. A matriz seleciona setgid separadamente, enquanto o resumo nomeia proprietário, grupo e outras permissões junto com esse bit especial.

A lista de atribuições gerada é u=rwx,g=rwx,o=rx,g+s. Isto difere da exibição de nove caracteres, mas representa o mesmo valor de doze bits. A escolha do diretório altera a explicação para o texto de herança de grupo implementado; escolher o arquivo altera o texto sem alterar 2775. A calculadora nunca verifica o grupo de destino ou cria um arquivo, portanto o exemplo permanece um modelo em vez de uma prescrição de implantação.

Exemplo resolvido: construção e leitura de 2775 para um modelo de diretório compartilhado

O comportamento de montagem, os recursos e a semântica adicional da plataforma não são modelados. A página não possui entrada de montagem, conjunto de recursos, consulta de kernel ou análise de sistema de arquivos. Ele pode representar setuid, setgid e sticky e pode variar sua explicação entre arquivos e diretórios regulares. Ele não pode estabelecer se uma regra externa neutraliza, estende ou interpreta esses bits de maneira diferente em um alvo real.

Mesmo o texto da fonte não deve ser generalizado além da interface. Um modo de bit especial válido prova que o analisador, o renderizador, a matriz, o resumo e as atribuições geradas concordam. Isso não prova que ocorreu comportamento de execução, herança ou exclusão. Mantenha as declarações de política não suportadas fora do diagnóstico e trate o comando copiado como texto inerte até que um ambiente inspecionado separadamente forneça o contexto ausente.

A política de montagem, os recursos e a semântica de canto não implementada permanecem externos

A conclusão implementada é uma viagem de ida e volta com significado posicional. Setuid mapeia para a posição de execução do proprietário, setgid para executar o grupo e sticky para outra execução. Letras minúsculas significam que o bit de execução associado está ativado; maiúscula significa que está desativado. O dígito octal inicial e as caixas de seleção dedicadas preservam as mesmas informações, portanto, nenhum bit especial precisa ser inferido apenas da prosa.

Teste um modo especial comparando todas as representações. Para 2775, espere o 2 inicial, posição de grupo s, uma caixa setgid marcada e uma adição g+s gerada. Uma incompatibilidade exporia um problema de conversão. O acordo estabelece apenas um modo consistente. Propriedade, política de montagem, capacidades, regras de aplicação e as consequências da execução do chmod permanecem além da evidência da calculadora do navegador.