Isso é verdade, não há como ter o su (1) redirecionando sua entrada de um lugar diferente do tty. Mas existem bibliotecas e programas para simular um terminal para scripts automatizados, por exemplo, Expect. Algo semelhante a:
stty echo
log_user 0
set timeout 2
if [catch "spawn su root" reason] {
send_user "Failed to spawn su: $reason\n"
exit 1
}
expect "Password:"
send "$PASSWORD\r"
expect "\r\n"
#set timeout 5
log_user 1
expect {
"# " {send_user "\nsu successful.\n"}
timeout {send_user "\nsu timed out.\n"; exit 1}
"incorrect" {send_user "\nsu failed.\n"; exit 1}
}