2011-11-18 10 views
9

Ho pochi script di bash che si aggiungono ai cron job con un timing specificato, ma che deve essere eseguito come utente root. Sto cercando di eseguire quegli script, ad esempio, i lavori di crob ma richiede il permesso dell'utente root, dal momento che sto eseguendo questi lavori in un'istanza di ubuntu ec2 in cui l'utente root è limitato. Quale sarebbe il modo per aggirare questi script come utente root.Come eseguire il cron job come utente invece di utente root

Grazie

+1

non sono sicuro di capire la domanda. Forse i comandi 'super' o' sudo' potrebbero aiutarti? –

+0

Questo appartiene a ServerFault, non a StackOverflow. – Amy

+0

Sei stato in giro abbastanza a lungo da sapere che questo non appartiene qui. Se vuoi sapere come cron uno script di bash su linux con un altro account utente, prova [unix.se]. Se EC2 gioca un ruolo significativo in questo, prova [sf]. – Will

risposta

7

ci sono diverse possibilità:

1) aggiungere lo script (s) per il crontab di root. Per fare questo si deve fare sudo su - o su - per diventare root, quindi aggiungere i cron jobs utilizzando crontab -e

2) consentire a un utente non root per usare un crontab, e aggiungere il lavoro cron crontab di tale utente, dal utilizzando crontab -e e impostare il flag set-uid dello script e cambiare la proprietà a root, quindi sarà eseguito come root chmod +s scriptname; chown root scriptname

10

È possibile creare uno script eseguire come root usando il setuid flag, il che rende uno script eseguito come il suo proprietario:

chmod +s yourscript 
chown root yourscript 

Basta fare yourscript run qualsiasi comando che si desidera eseguire come root .

Si noti che con questo metodo, qualsiasi utente può eseguire lo script.

+0

Molte piattaforme ignorano 'setuid' sui file di script per motivi di sicurezza. – tripleee

2

Basile ha ragione con il suo commento. Se vuoi eseguire qualcosa come root in Ubuntu, usa sudo.

Se si desidera eseguire uno script (o alcuni comandi) automaticamente con i diritti di superutente, senza dover digitare una password, eseguire

sudo visudo 

per modificare il file sudoers. Per rendere sudo smettere di chiedere una password per uno script specifico (o di comando) inserire

username ALL = NOPASSWD: /path/to/script 

dove username è il nome del chiamante sudo utente.