Sim, você pode su para qualquer usuário em um script como root sem precisar de uma senha. Isso é um pouco complicado, mas vai funcionar. Você pode ter alguns soluços ao longo do caminho (seu ambiente muda quando você su, por exemplo), mas você será capaz de fazê-lo funcionar. Eu não acho que é "certo". Além disso, o root pode fazer tudo, então você sempre pode encontrar uma maneira de fazer tudo como root.
Eu recomendo usar o sudo para tudo.
Para coisas interativas, o sudo com prompts de senha é OK. Eu prefiro que você peça sua própria senha, não a de root. Desta forma, você pode conceder direitos administrativos limitados, sem dar a senha do root (e, portanto, privilégios totais). Ter que digitar sua senha é bom para o "ei! Estou digitando minha senha, isso significa que estou fazendo algo potencialmente perigoso, vamos verificar antes de digitar". Você também pode configurar o sudo para não solicitar repetidamente senhas (ou seja, uma vez digitadas, as invocações do sudo dentro de n minutos não são solicitadas).
Além disso, você pode fazer com que o sudo deixe um usuário executar qualquer ação como root, não apenas um conjunto limitado de comandos. Eu uso isso em caixas eu admin; é melhor do que "su -", fornece algumas coisas de auditoria prontas, você sempre pode "sudo -i" (ou "-s", às vezes) para obter um shell de root, etc.
Para coisas não interativas, há mais opções.
Eu não gosto muito de binários suid. Isso deve ser usado apenas para binários muito usados que precisam de privilégios de root, que são muito simples e que foram completamente auditados. O ping, por exemplo, requer privilégios de root para fazer seu trabalho. No entanto, qualquer falha de segurança em um binário suid é potencialmente muito perigosa.
Usar o ssh é uma maneira muito complexa de conseguir isso.
Use o sudo, configure-o para não exigir uma senha para os comandos específicos exigidos pelo script. "man sudoers" é uma leitura longa, mas definitivamente interessante - há muitas coisas que você pode fazer com o sudo ...