Używam tego:
su -l $MUSER -c "myCommand args..."
Aktualizacja: Ponieważ istnieje zainteresowanie w tej odpowiedzi, opiszę sposób używam go tutaj.
Uruchomimy serwery jako normalni użytkownicy systemu Linux, a nie root. Nazwa użytkownika składa się z trzech części:
usługi, klient, na scenie
ten sposób możemy uruchomić kilka usług dla kilku klientów w jednym systemie operacyjnym Linux.
Przykład: obsługa foo_bar_p „foo” od klienta „Bar” i „p” oznacza wytwarzanie
Oto część skrypcie. Skrypt startowy może być wykonywany jako root lub jako użytkownik foo_bar_p:
# /etc/init.d/foo_bar_p-celeryd
# scriptname contains linux username
SCRIPT_NAME=`basename "$0"`
SYSTEM=${SCRIPT_NAME%*-celeryd}
U=`id -nu`
if [ ! $U == $SYSTEM ]; then
if [ $U == "root" ]; then
# use "-l (login)" to delete the environment variables of the calling shell.
exec su -l $SYSTEM -c "$0 [email protected]"
fi
echo "Script must be run from $SYSTEM or root. You are '$U'"
rc_exit 1
fi
# OK, now I am foo_bar_p
cd
. $HOME/.bashrc
....
użyj tego typu polecenia "su -c" twoje polecenie "inny_użytkownik" – vikky
Jak zauważyli @Henrick w swojej odpowiedzi poniżej, skrypty startowe mogą korzystać z sekcji '' setuid' '' (http://upstart.ubuntu.com/cookbook/# setuid), aby ustawić użytkownika. – clayzermk1