Il profilo bash funziona per l'utente ma non sudo


9

Ho modificato il mio .profile per includere una cartella se è collegata un'unità flash. Quando si esegue il comando come utente funziona bene ma mi dice che lo script deve essere eseguito da sudo (questo è quello che voglio). Tuttavia, quando provo a eseguirlo con sudo ottengo "comando non trovato"

Ho un collegamento simbolico (flash) nella mia cartella / var / www che punta al mio / media / flash drive. (non dimenticare questa configurazione poiché è solo per gli sviluppatori)

questo è il .profile del mio utente:

# set PATH so it includes flash scripts
if [ -d "/var/www/flash/scripts" ] ; then
    PATH="/var/www/flash/scripts:$PATH"
fi

quando provo a correre come sudo ottengo:

sudo: script: command not found    

qualche idea?

Risposte:


3

Quando esegui lo script mentre sudostai tentando di accedere a root. Quindi $HOME/.profilenon si /root/.profileaccederà al tuo accesso.

Quindi apportare le modifiche che cosa mai avete fatto in $HOME/.profilea /root/.profile. Per creare /root/.profile. Utilizzare i seguenti comandi.

sudo su
cd /root
touch .profile

dopo aver apportato le modifiche prova a eseguire lo script.

oppure modifica $HOME/.bashrce aggiungi la seguente riga

alias sudo='sudo env PATH=$PATH $@'

Spero che sia di aiuto.


Ho provato "alias sudo = 'sudo env PATH = $ PATH $ @'" ma ottengo "env: wp: autorizzazione negata"
user564448

scusa, "wp" è lo script
user564448

Prova l'altro passaggio che ho citato.
devav2

1
Leggi qui che dovresti usaresudo su -p
devav2

2

È possibile conservare il valore di $PATHquando si utilizza sudo. Utilizzare visudoper aggiungere $PATHall'elenco di variabili da conservare. Una linea come la seguente /etc/sudoersdovrebbe fare il trucco:

Defaults env_keep += "PATH"

1

questo è il comportamento di sudo in Ubuntu ..

ad esempio eseguire il comando seguente

echo 'echo $PATH' | sh

e di questo

echo 'echo $PATH' | sudo sh 

vedi che l'output è diverso! per evitare percorsi diversi inserisci quanto segue nel tuo ~ / .bashrc

alias sudo='sudo env PATH=$PATH'

Dopo aver inserito alias sudo = 'sudo env PATH = $ PATH' nel mio .bashrc ottengo "env: wp: autorizzazione negata"
user564448

-1

Puoi anche spostare il tuo file in una directory usata sudoers:

    sudo mv $HOME/bash/script.sh /usr/sbin/ 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.