Ve skriptu použijte příkaz sudo.
Ve tvaru:
sudo -u username command
příkaz sudo spustí příkaz jako uživatel uživatelské jméno .
Pokud je skript spuštěn jako root, nemyslím si, že bude vyžadovat heslo. Jinak tento článek pojednává o tom, jak používat sudo s heslem v jednom příkazovém řádku?, a tento článek pojednává o tom, jak používat sudo bez hesla?
Tato odpověď je dobrá, ale rada ohledně chyby serveru je mírně nebezpečná – umožnila by komukoli spustit cokoli jako root! Zveřejňuji tedy příspěvek sem, protože nemohu formátovat komentář.
Doporučil bych použít visudo, abyste udělili potřebná oprávnění co nejpřesněji. Zadejte visudo
a přidejte řádek jako:
username hostname = NOPASSWD: /full/path/to/command1, full/path/to/command2
Pokud potřebujete spustit stejnou věc na mnoha hostitelích, můžete ji otevřít pomocí:
username ALL = NOPASSWD: /full/path/to/command1, full/path/to/command2
Ale **nepoužil bych* ani jedno:
username ALL=(ALL) NOPASSWD: ALL
orusername hostname =ALL
Manuová stránka sudoeru obsahuje spoustu krvavých detailů
# Líbí se mi:
#test if running bash as a different user works
sudo -u nobody bash -c : && RUNAS="sudo -u nobody"
echo 1: $USER
#Runs bash with commands between '_' as nobody if possible
$RUNAS bash<<_
echo 2: \$USER
_
echo 3: $USER
# ./run
1: root
2: nobody
3: root