Linux カーネルは、実行可能バイナリの setuid および setgid 権限をサポートしています。
これらの機能なしでカーネルを構築することは可能ですか?
これらがなければ、システムを改ざんできるのは管理者だけになります。
答え1
おそらく、この機能をカーネルから削除することは可能であり、オプションを使用して suid なしでファイルシステムをマウントすることも可能ですnosuid
。これはよりシンプルであり、同じことを実現できると思います。
しかし、それは多く/usr/
機能の一覧です。これは、Ubuntu 18.04 で setuid されている `/bin/内のコマンドの一覧です。
$ 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 デバイスをマウントできなくなります。権限を昇格できなくなります。ホストを ping して削除できなくなります。そしておそらく、さらに予期しない結果も生じます。
つまり、システムのセキュリティを確保することが目的なら、おそらく間違った 3 つの方法を採用していることになります。より良い方法は、標準の Linux カーネルよりも厳密な方法でユーザー権限を強制しようとする AppArmomur または SELinux を検討することです。ただし、コストはかかります。複雑さが増すのです。
これを通常のUbuntuシステムで実行すると、おそらくさまざまな面白い行動。