Embora o sudo seja comumente usado junto com o comando su, pensar no sudo su é a única maneira de fazer isso é um erro.
O sudo tem muitas opções para definir o que executar por quem (usuário éter do grupo de usuários) em qual host. Um arquivo sudoers de granularidade fina (ou entrada LDAP, se o sudo-ldap estiver envolvido) junto com uma mente inteligente de um administrador de sistema pode acabar em regras que podem não comprometer a segurança do sistema, mesmo que a conta do usuário tenha sido comprometida.
vamos ver um exemplo de palavras reais:
$ sudo -l User exampleuser may run the following commands on this host: (root) /opt/xmldns/gen.sh (root) /usr/bin/make -C /root/admin (root) /usr/sbin/xm list, /usr/sbin/xm dmesg (root) /usr/sbin/zorpctl stop, /usr/sbin/zorpctl start, /usr/sbin/zorpctl status (root) /etc/init.d/apache status, /etc/init.d/apache stop, /etc/init.d/apache start (root) /usr/local/bin/protodump.sh httpreq (root) /usr/sbin/xm console $
Se alguém não permitir que o usuário sudo-exec su / bash ou outro shell seja diretamente (sudo su) ou indiretamente (deixando um editor gerar com root, que pode ser usado para gerar shell - neste caso, root), sudo é amigo de um administrador do sistema e também de usuários.
Voltando à questão no tópico, se sudo estiver desativado e su for a única maneira de se tornar root em um sistema, um plantaria um comando su falso (por exemplo em ~ /.../ fakesu) e um alias como alias su = '~ /.../ fakesu' no arquivo rc do shell de login do usuário.
Neste caso, um simples comando su (raise hands, que usa / bin / su para chamar) terminaria chamando o comando fakesu, que pode capturar a senha.