Linux 核心支援可執行二進位檔案的 setuid、setgid 權限。
是否可以建構沒有這些功能的核心?
如果沒有這些,管理員是唯一可以篡改系統的使用者。
答案1
可能可以從核心中刪除此功能,也可以使用該nosuid
選項掛載沒有 suid 的檔案系統。我覺得這樣比較簡單,可以達到相同的效果。
但這打破了很多的功能。這是/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 刪除主機。可能還有更多意想不到的後果。
簡而言之,如果您的目標是保護系統安全,那麼您可能會喊錯三個。更好的方法可能是研究 AppArmomur 或 SELinux,它嘗試以比標準 Linux 核心更嚴格的方式強制執行使用者權限。這是有代價的:增加了複雜性。
如果你對普通的 Ubuntu 系統執行此操作,你可能會看到各種有趣的行為。