Vytvářím bash skript, který vyžaduje spouštění příkazů jako konkrétní uživatel. V důsledku toho používám příkaz:
runuser
Testoval jsem tento skript a funguje perfektně v Ubuntu Server 14.10. Při testování ve dnech 14.04 a 12 jsem však narazil na následující chybu:
runuser: command not found
K tomu dochází při každém použití příkazu runuser.
K vytvoření nového uživatele používám následující příkaz:
adduser --no-create-home --home "/home/$homedir" --disabled-password --gecos "$realname" "$uname" ; usermod -p "$passwd" "$uname"
Je něco konkrétního, co je potřeba specifikovat při vytváření nového uživatele? Existuje nějaká konkrétní závislost, která chybí?
Úpravy pro otázky:
Výstup echa $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Výstup ls -l /sbin/runuser
ls: cannot access /sbin/runuser: No such file or directory
Důvod, proč chci použít runuser vs su, je následující:
Při použití runuser mohu spustit následující příkazy:
runuser user -c 'cd'
runuser user -c 'wget http://file.com'
Zatímco u su musím příkazy řetězit takto:
su user -c 'cd; wget http://file.com'
Přijatá odpověď:
runuser
je nedávný příkaz, objevil se v util-linux 2.23. Ubuntu 14.04 dodává util-linux 2.20, takže tento příkaz zatím nemá.
runuser
není příliš užitečné. Stačí použít su
namísto. Všimněte si, že příkaz runuser user -c 'cd'
ve skutečnosti nic nedělá – rozsah cd
se nevztahuje na další volání runuser
. Budete muset použít runuser user -c 'cd && wget http://file.com'
tak jako tak. Použijte su user -c 'cd && wget http://file.com'
místo toho.