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

20

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

chmod 555 test-file

darei

-r-xr-xr-x

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

chmod 4555 test-file

isso me dá

-r-sr-xr-x

Então, xmudou para s. O que isso significa?

Mas Bagol
fonte
11
também explicado aqui: askubuntu.com/a/550947/72216 ("about the s-flag")
Jacob Vlijm 03/02/2015
@JacobVlijm também explicou mais detalhadamente com os outros bits "especiais" abaixo
Thomas Ward

Respostas:

29

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

Special, User/Owner, Group, E Othersem que ordem, quando se trabalha com os chmods quatro numéricas, com que o primeiro número sendo os bits especiais que podem ser definidas.

chmod 4555 equivale ao seguinte:

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

A sseqüência de caracteres 'readable human' 'para permissões indica que o SetUIDbit (explicado abaixo) está definido.


Efetivamente, podemos decompor o chmodargumento de permissões de quatro números em descritores específicos, como a seguir, e fazer as contas para determinar o que 4seria na primeira seção, 5na próxima seção e assim por diante.

Lembre-se de que ####é Special User/Owner Groupe Othersnessa ordem.

Para Specialatributos (o primeiro número em um chmodargumento de quatro números ):

  • Set UID- Execute o arquivo como proprietário, independentemente do usuário que o esteja executando (mostra como sna sequência de permissões legíveis por humanos da Userseção) = +4 ( --sabaixo User/Owner)
  • Set GID- Execute o arquivo como grupo, independentemente do usuário / grupo que o executa (mostra como sna sequência de permissões legíveis por humanos da Groupseção) = +2 ( --sabaixo Group)
  • Sticky Bit- EFETIVO APENAS PARA DIRETÓRIOS - Se definido, apenas o usuário proprietário do diretório rootpoderá excluir o diretório e apenas o proprietário do arquivo ou rootexcluir arquivos dentro dele. (mostra como tna sequência de permissões legíveis por humanos da Othersseção) = +1 ( --tabaixo Others)

Para User/Owner, Groupe Othersatributos (os últimos três números em um chmodargumento de quatro números ):

  • Read= +4 ( r--)
  • Write= +2 ( -w-)
  • Execute(para arquivos) ou 'Entrar / listar itens' (para diretórios) = +1 ( --x)
Thomas Ward
fonte
7

Isso é chamado de SETUIDbit. se for definido por chmod 4555 test-file(no seu caso), test-filepoderá ser executado por qualquer usuário como se o usuário fosse o proprietário do arquivo.

Quando o SETUIDbit é definido, o ID do usuário efetivo ( EUID) do usuário que não tem permissão para executar o arquivo de outra forma (por permissões normais, por exemplo 0744), pega o EUID do proprietário do arquivo e pode executá-lo.

heemail
fonte