Por que montar, ping e su tem um conjunto de bits fixo?

2

Em /bin , a maioria dos binários não tem um conjunto de bits fixos, exceto: fusermout , mount , umount , ping , ping6 e su .

Por que esses não devem ser excluídos ou renomeados? É porque eles são usados em certos scripts críticos e, se assim for, isso significa que todos os outros binários não são vitais e o sistema poderia funcionar sem eles?

    
por whatever489 21.06.2016 / 23:51

1 resposta

5

Esse não é o bit pegajoso, esse é o bit setuid. Um sticky bit geralmente se aplica a diretórios, você pode ver isso em /tmp , por exemplo:

$ stat -c '%A %n' /tmp /bin/ping /usr/bin/crontab 
drwxrwxrwt /tmp
-rwsr-xr-x /bin/ping
-rwxr-sr-x /usr/bin/crontab

O t indica um bit fixo, um s nos modos de usuário indica setuid e um s nos modos de grupo indicam setgid.

O bit setuid faz com que o comando seja executado como o usuário que possui o arquivo , geralmente root . Isso é feito porque:

  • ping e ping6 precisam de acesso root para usar soquetes não processados. Veja esta postagem de superusuário e este Unix & amp; Postagem no Linux . Como a resposta SU observa, algumas distros agora usam recursos em vez de setuid - meu sistema Arch Linux não tem setuid em ping .
  • su precisa de acesso root para alternar para um usuário arbitrário
  • mount (e umount , etc.) precisam setuid para montar coisas especificadas como sendo montáveis por qualquer pessoa (via users opção em /etc/fstab ) (veja esta resposta Unix e Linux )
  • crontab é setgid, já que os arquivos crontab são armazenados em um local apenas gravável por root e o crontab group:

    $ stat -c '%A' /var/spool/cron/crontabs
    drwx-wx--T
    

    (nota: o diretório crontab também é adesivo).

Veja também:

por muru 22.06.2016 / 00:21