Ubuntu sem setuid

Ubuntu sem setuid

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 nosuidopçã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.

informação relacionada