Yes, Xorg being suid is stupid. That used to be needed due to several historical reasons, but is not any more.
But for ‘su’ or ‘sudo’ suid is still the right mechanism to use. Capabilities won’t help, when the tool is supposed to give one full privileges. Of course, in some use cases no such command is needed, then the system can run with no suid. Similar functionality could be implemented without suid too (e.g. ssh to localhost), but with its own security implications, usually bigger than those brought but a mechanism as simple as suid (the KISS rule).
Yes, Xorg being suid is stupid. That used to be needed due to several historical reasons, but is not any more.
But for ‘su’ or ‘sudo’ suid is still the right mechanism to use. Capabilities won’t help, when the tool is supposed to give one full privileges. Of course, in some use cases no such command is needed, then the system can run with no suid. Similar functionality could be implemented without suid too (e.g. ssh to localhost), but with its own security implications, usually bigger than those brought but a mechanism as simple as suid (the KISS rule).