Voglio eseguire uno script bash all'avvio in CentOS 6. Ho aggiunto lo script in /etc/init.d/
directory ma tutti questi script sono eseguiti da root. Voglio eseguire script per qualsiasi utente.
Voglio eseguire uno script bash all'avvio in CentOS 6. Ho aggiunto lo script in /etc/init.d/
directory ma tutti questi script sono eseguiti da root. Voglio eseguire script per qualsiasi utente.
Risposte:
Puoi aggiungerlo al tuo crontab in questo modo:
@reboot /bin/bash /dir/of/your/script
Se non hai familiarità con crontab
, ecco alcuni suggerimenti:
crontab -l
elenca i lavori correnti pianificati. crontab -e
ti permette di modificarlo. crontab -u <user>
(e crontab -l/-e -u <user>
) per configurare crontab per altri utenti.
Puoi usare su
lasciare i privilegi di root usando il -c
per eseguire un comando, come:
# su user -c whoami
user
Se vuoi che uno script specifico lasci i privilegi, puoi semplicemente chiamare lo script stesso con su <user> -c <script> -magic-parameter
dove -magic-parameter
dice allo script di fare ciò che vuoi che faccia come utente non root.
Primo: non è una domanda di programmazione - il posto migliore è https://superuser.com/ .
Secondo: probabilmente stai usando un Linux - ma è meglio specificare;).
Terzo: l'esecuzione degli script all'avvio è molto pericolosa per la sicurezza del sistema. Quindi ecco una buona ragione per gli script di root-only. Quindi, se tu avere accesso root - usalo (sei un amministratore di sistema, giusto?), se non hai accesso - è probabilmente meglio lasciarlo così com'è .. :)
Se la tua domanda riguarda come modificare l'UID efficace per alcuni script rc.d, puoi usare qualcosa come:
#!/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
così, puoi mettere il tuo script ovunque e da init-script lo eseguirà con su
.