Como su
só lê um TTY, você terá que dar um. Se a tela do GNU estiver disponível, tente algo assim:
screen -d -m -S foo su -c 'sudo my_command' admin
screen -S foo -X stuff 'admin_password
'
A linha 1 configura uma sessão que executa o comando su
especificado, que solicitará a senha do usuário admin
. As linhas 2 e 3 "colocam" a senha (e a nova linha à direita para simular pressionando enter, observe as aspas) na sessão nomeada; a espera su
irá recebê-lo do arquivo e, supondo que esteja correto, execute o comando especificado ( sudo my_command
).
(Eu tenho certeza que algo similar pode ser feito com o tmux, mas eu não uso isso, então só posso apontar para a man page. Alternativamente, você poderia usar a oportunidade para aprender programação e escrever seu próprio programa para faça apenas a passagem da senha para o su :))