2013-09-11 13 views
5

Mi sembra che se scrivo uno script di shell in $HOME/path/to/script/myscript e export PATH=$PATH:$HOME/path/to/script/ allora lo script sudo -E myscript dovrebbe eseguire correttamente lo script?l'opzione sudo E non funziona?

From sudo man page:

-E Il -E (preservare l'ambiente) opzione indica alla politica di sicurezza che l'utente desidera preservare le loro variabili di ambiente esistenti. La politica di sicurezza può restituire un errore se viene specificata l'opzione -E e l'utente non dispone dell'autorizzazione per preservare l'ambiente.

Ma il sudo -E script non riesce a trovare il comando. So che posso semplicemente aggiungere /absolute/path/to/script/ ai file che determinano la variabile PATH per sudo env, ma questo non è l'approccio che voglio prendere.

per affrontare i commenti:
@ H2CO3: Ho visto sudo sudo galleggianti giro per la rete, e mi bug tremendamente, è letteralmente dire "Dammi i permessi di superutente per eseguire superuser". Non so se risolverebbe il problema, ma sembra un approccio fondamentalmente errato. Poi di nuovo ho iniziato a usare i sistemi linux/bsd a metà degli anni '90, quindi mi preoccupo solo del comando sudo.
@rici: lo script non dispone delle autorizzazioni eseguibili, ma questo è sicuramente qualcosa di verificare ogni volta che qualcosa non funziona nei sistemi * nix =)

+0

Forse ha bisogno di più permessi ... prova 'sudo sudo' ... Oh bene ... –

+0

Ti sei assicurato che il tuo file di script sia eseguibile? – rici

+0

La maggior parte delle distro di linux/unix non richiede più la CLI per eseguire attività di 'general computing'. Solo perché sudo può essere utilizzato per l'informatica generale, non lo rende lo scopo principale di questo strumento. Python PU be essere (ed era spesso) usato come calcolatore, ma ovviamente non è un "software di calcolo generale". Uso sudo per eseguire strumenti utili esclusivamente per lo sviluppo e script che ho scritto. Pertanto, ti chiedo gentilmente di reimpostare il contenuto di http://stackoverflow.com/help/on-topic, http://superuser.com/help/on-topic o la tua decisione di contrassegnare questa domanda come disattivata argomento. – MishaP

risposta

8

/etc/sudoers per impostazione predefinita ha un'impostazione per ripristinare l'ambiente. E definisce anche un percorso di sicurezza predefinito che è in effetti quando si esegue sudo -E [cmd].

Sarà necessario modificare il file/etc/sudoers e aggiungere "env_keep" e menzionare le variabili che si desidera conservare.

default env_keep + = "percorso"

ma prima di questo commento la linea secure_path. Quindi prova il tuo comando tramite sudo -E.

+3

'commenta la linea secure_path 'questo è stato il trucco, grazie! – MishaP