The author points out that the meaning has changed over time from the initial meaning of "superuser" to "switch user", due to feature creep.
The author points out that the meaning has changed over time from the initial meaning of "superuser" to "switch user", due to feature creep.
http://harmful.cat-v.org/cat-v/
I think `su` is pretty good as-is, but sudo has a bit of feature creep. For example, I don't think these belong in sudo (taken from Linux):
-e: edit something
-l: list allowed/forbidden commands
-p: change prompt
Ideally, sudo would just run as root and su would just switch users. Then instead of:
sudo -u some_user cmd
You'd do this instead:
sudo su -c "cmd" some_user
Su only does one thing (switch users, -c for one-off cmd) and sudo only does one thing (change to root). Currently, both "sudo -u some_user cmd" and "sudo su -c some_user cmd" accomplish basically the same thing, which is a sign of feature creep.
This could be a simple wrapper script around sudo, but that could require entering the password twice.