Ядро Linux поддерживает разрешения setuid, setgid для исполняемых двоичных файлов.
Возможно ли собрать ядро без этих возможностей?
Без них вмешиваться в систему могут только администраторы.
решение1
Вероятно, можно удалить эту функцию из ядра, а также можно монтировать файловые системы без suid, используя опцию nosuid
. Это кажется мне более простым и даст тот же результат.
Но это ломаетмногофункций. Это список команд в /usr/
и `/bin/, которые имеют setuid в 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
Пользователи больше не смогут менять свои пароли. Они не смогут монтировать USB-устройства. Они не смогут повышать привилегии. Они не смогут пинговать и удалять хосты. И, вероятно, еще больше непредвиденных последствий.
Короче говоря, вы, вероятно, выбрали не те три, если ваша цель — защитить свою систему. Лучшим подходом, вероятно, будет рассмотреть AppArmomur или SELinux, которые пытаются обеспечить соблюдение прав пользователя более строго, чем стандартное ядро Linux. Это имеет свою цену: повышенную сложность.
Если вы сделаете это с чистой системой Ubuntu, вы, вероятно, увидите всевозможныеинтересныйповедение.