sudo su - foouser <command> exige que você tenha pelo menos um acesso root limitado para executar su - foouser <command> como root.
sudo -u foouser <command> pode fazer o que quiser em um passo. Mas isso requer que o administrador do sistema conceda a você sudo acesso à conta foouser desta maneira:
ignacio ALL=(foouser) ALL
em vez desta forma:
ignacio ALL=(root) su - foouser
Configurar sudo desta forma permitirá definir, por ex. um pseudônimo como você imaginou:
as_foo='sudo -u foouser'
E, evitando o su - , talvez você possa continuar usando suas próprias personalizações: usar sudo altera apenas a identidade do usuário, mas mantém HOME em seu valor anterior, lendo quaisquer scripts de inicialização do shell e outras personalizações do seu diretório inicial em vez de foouser 's.
(É claro que esses scripts devem ser legíveis para esse outro usuário também, e qualquer script compartilhado que você possa executar deve se referir ao diretório inicial de foouser explicitamente como /home/foouser em vez de apenas $HOME .)
No entanto, existem algumas configurações de sudo que podem impedir que a solução funcione: se a opção always_set_home sudo estiver definida no arquivo sudoers ou se a opção env_reset estiver definida sem adicionar HOME à env_keep list, HOME será redefinido de qualquer maneira. Em tal situação, tente adicionar a opção -E ao comando sudo para solicitar explicitamente a manutenção de seu ambiente.
E quando você realmente quiser executar algo como foouser com o ambiente definido exatamente como está logado como foouser (ou seja, o equivalente a sudo su - foouser ), adicione a opção -i para solicitar especificamente que . Então, sudo -i -u foouser é uma substituição 100% precisa de sudo su - foouser .
Se você encontrar algum sistema com uma versão antiga do sudo que não tenha a opção -i , use a opção -H com o sudo: não é um substituto perfeito, mas pode ser o suficiente. Uma versão tão antiga do sudo provavelmente terá alguns bugs conhecidos sensíveis à segurança também, então valeria a pena atualizá-lo de qualquer maneira.
Você pode usar sudo -l como você mesmo para ver exatamente como o seu acesso ao sudo está definido e quais opções do sudo (entradas de Padrões) estão em vigor para você.