Você pode usar a opção -c
de su
para passar um único comando.
su root -c 'sh /home/jay/script-that-needs-executing-as-root.sh'
Eu preciso su como root e executo um comando como uma única linha. Isso é para uso em um script python. O que estou procurando é:
$ su root [some-magic] sh /home/jay/script-that-needs-executing-as-root.sh
<script output>
Isto está em um servidor ubuntu público-ish. A conta em que isso será executado não tem senha, mas foi configurada de modo que basicamente tudo é inacessível, além de um script python que é somente leitura e em ~ / .profile, no final é
cd ~/py/main
python3 start.py
logout
Portanto, eles não têm acesso real ao servidor. Dentro do script python eu tenho o su funcionando, então se for necessário o usuário pode digitar shellasroot
no script python, digitar a senha do root e executar comandos, mas eu estou procurando uma maneira de fazer isso programaticamente.
TL; DR - Em uma conta sem privelages sudo, eu preciso executar um script de shell, como root, em uma linha.