Qual é o primeiro número em um argumento chmod de 4 números (como 'chmod 4555')?

16

Quando eu instalo um programa, ele me recomenda fazer chmod 4555 . Ok, eu sei sobre valores se eu apenas usar três números. Por exemplo

chmod 555 test-file

dará

-r-xr-xr-x

4 para gravação, 2 para leitura e 1 para execução. Mas quando faço isso:

chmod 4555 test-file

isso me dá

-r-sr-xr-x

Então, x foi alterado para s . O que isso significa?

    
por Mas Bagol 03.02.2015 / 17:59

2 respostas

24

Na verdade, existem quatro conjuntos de atributos com os quais você pode trabalhar via chmod .

Special , User/Owner , Group e Others nessa ordem, ao trabalhar com os chmods de quatro números, sendo que esse primeiro número é um bit especial que pode ser definido.

chmod 4555 é igual ao seguinte:

  • Set UID bit - executa o arquivo como o proprietário, independentemente de qual usuário o está executando
  • Usuário / Proprietário: Read, Execute
  • Grupo: Read, Execute
  • Outros: Read, Execute

A s em sua string 'human readable' para permissões indica que o SetUID bit (explicado abaixo) está definido.

Efetivamente, podemos dividir o argumento de quatro dígitos chmod em descritores específicos da seguinte forma, e fazer as contas para determinar o que seria um 4 na primeira seção, um 5 na próxima seção e assim por diante.

Lembre-se de que #### é Special User/Owner Group e Others nessa ordem.

Para atributos Special (o primeiro número em um argumento de quatro números chmod ):

  • Set UID - Executa o arquivo como proprietário, independentemente do usuário que o está executando (mostra como s na cadeia de permissões legível para User section) = +4 ( --s under User/Owner )
  • Set GID - Executa o arquivo como grupo, independentemente do usuário / grupo que o executa (mostra como s na cadeia de permissões legível para Group section) = +2 ( --s under Group )
  • Sticky Bit - EFETIVO NOS DIRETÓRIOS SOMENTE - Se definido, somente o usuário proprietário do diretório e root poderão excluir o diretório e somente o proprietário do arquivo ou root poderá excluir arquivos dentro dele. (mostra como t na cadeia de permissões legível por humanos para a seção Others ) = +1 ( --t under Others )

Para os atributos User/Owner , Group e Others (os últimos três números em um argumento de quatro números chmod ):

  • Read = +4 ( r-- )
  • Write = +2 ( -w- )
  • Execute (para arquivos) ou 'Inserir em / listar itens' = +1 ( --x )
por Thomas Ward 03.02.2015 / 18:10
7

É chamado de SETUID bit. se for definido por chmod 4555 test-file (no seu caso), então o test-file pode ser executado por qualquer usuário como se o usuário fosse o proprietário do arquivo.

Quando o SETUID bit é definido, o ID do usuário efetivo ( EUID ) do usuário que não tem permissão para executar o arquivo (por meio de permissões normais, por exemplo, 0744 ) aceita o EUID do proprietário do arquivo e pode executar o arquivo.

    
por heemayl 03.02.2015 / 18:12