Chcę uruchomić skrypt bash podczas uruchamiania w CentOS 6. Dodałem skrypt w /etc/init.d/katalogu, ale wszystkie te skrypty są uruchamiane przez root. Chcę uruchomić skrypt dla dowolnego użytkownika.
Chcę uruchomić skrypt bash podczas uruchamiania w CentOS 6. Dodałem skrypt w /etc/init.d/katalogu, ale wszystkie te skrypty są uruchamiane przez root. Chcę uruchomić skrypt dla dowolnego użytkownika.
Odpowiedzi:
Możesz dodać go do swojego crontab w następujący sposób:
@reboot /bin/bash /dir/of/your/script
Jeśli nie jesteś zaznajomiony crontab, oto kilka wskazówek:
crontab -l wyświetla bieżące zaplanowane zadania.crontab -e pozwala na edycję.crontab -u <user>(i crontab -l/-e -u <user>), aby skonfigurować crontab dla innych użytkowników.
Możesz użyć, suaby usunąć uprawnienia administratora, używając -cpolecenia, aby uruchomić polecenie, takie jak:
# su user -c whoami
user
Jeśli chcesz, aby określony skrypt zrzucił uprawnienia, możesz po prostu wywołać sam skrypt, su <user> -c <script> -magic-parametergdzie -magic-parametermówi skryptowi, aby zrobił to, co chcesz, jako użytkownik inny niż root.
Po pierwsze: nie jest to pytanie programistyczne - lepsze miejsce to https://superuser.com/ .
Po drugie: prawdopodobnie używasz Linuksa - ale lepiej jest określić;).
Po trzecie: Uruchamianie skryptów podczas rozruchu jest bardzo niebezpieczne dla bezpieczeństwa systemu. Dlatego jest to dobry powód dla skryptów tylko do rootowania. Tak więc, jeśli mają dostęp root - go używać (jesteś sysadmin, prawda?), Jeśli nie masz dostępu - to chyba lepiej zostawić tak jak jest .. :)
Jeśli twoje pytanie dotyczy zmiany efektywnego UID dla jakiegoś skryptu rc.d, możesz użyć czegoś takiego:
#!/bin/bash
export MYHOME=/path/to/somewhere
case $1 in
start) /bin/su <username> $MYHOME/bin/startup.sh ;;
stop) /bin/su <username> $MYHOME/bin/shutdown.sh ;;
restart)
/bin/su <username> $MYHOME/bin/shutdown.sh
/bin/su <username> $MYHOME/bin/startup.sh
;;
esac
exit 0
więc możesz umieścić swój skrypt w dowolnym miejscu i od skryptu init uruchomi go su.