O kernel Linux suporta permissão setuid e setgid para binários executáveis.
É possível construir um kernel sem esses recursos?
Sem estes, os administradores são os únicos usuários que podem adulterar o sistema.
Responder1
Provavelmente é possível remover esse recurso do kernel, e também é possível montar sistemas de arquivos sem suid, usando a nosuid
opção. Isso me parece mais simples e alcançaria a mesma coisa.
Mas isso quebra ummuitode recursos. Esta é uma lista de comandos em /usr/
e `/bin/ que é setuid no Ubuntu 18.04:
$ find /usr /bin -perm -4000
/usr/bin/pkexec
/usr/bin/gpasswd
/usr/bin/traceroute6.iputils
/usr/bin/newgrp
/usr/bin/arping
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/passwd
/usr/bin/sudo
/usr/lib/xorg/Xorg.wrap
/usr/lib/eject/dmcrypt-get-device
/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0
/usr/lib/s-nail/s-nail-privsep
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/openssh/ssh-keysign
/usr/lib/policykit-1/polkit-agent-helper-1
/usr/sbin/pppd
/bin/ping
/bin/mount
/bin/umount
/bin/su
/bin/fusermount
Os usuários não poderão mais alterar suas próprias senhas. Eles não poderão montar dispositivos USB. Eles não serão capazes de elevar privilégios. Eles não serão capazes de executar ping para remover hosts. E provavelmente mais consequências não intencionais.
Resumindo, você provavelmente está latindo para os três errados se seu objetivo é proteger seu sistema. Uma abordagem melhor é provavelmente examinar o AppArmomur ou o SELinux, que tenta impor permissões de usuário de uma maneira mais rigorosa do que o kernel Linux padrão. Isso tem um custo: maior complexidade.
Se você fizer isso em um sistema Ubuntu vanilla, provavelmente verá todos os tipos deinteressantecomportamento.