Profil bash działa dla użytkownika, ale nie sudo

9

Zmodyfikowałem mój .profile, aby dołączał folder, jeśli dysk flash jest podłączony. Po uruchomieniu polecenia jako użytkownik działa dobrze, ale mówi mi, że skrypt musi być uruchomiony przez sudo (tego właśnie chcę). Jednak gdy próbuję uruchomić go z sudo, pojawia się komunikat „Nie znaleziono polecenia”

Mam dowiązanie symboliczne (flash) w folderze / var / www wskazujące na mój / media / flash drive. (nie myśl o tej konfiguracji, ponieważ jest tylko dla deweloperów)

to jest .profile mojego użytkownika:

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

podczas próby uruchomienia jako sudo dostaję:

sudo: script: command not found    

jakieś pomysły?

użytkownik564448
źródło

Odpowiedzi:

3

Po uruchomieniu skryptu podczas sudopróby uzyskania dostępu do katalogu głównego. Więc twój $HOME/.profiledostęp nie /root/.profilebędzie dostępny.

Więc dokonać zmian jakie kiedykolwiek miało miejsce w $HOME/.profiledo /root/.profile. Aby stworzyć /root/.profile. Użyj następujących poleceń.

sudo su
cd /root
touch .profile

po dokonaniu zmian spróbuj uruchomić skrypt.

lub edytuj $HOME/.bashrci dodaj następujący wiersz

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

Mam nadzieję że to pomoże.

devav2
źródło
Próbowałem „alias sudo = 'sudo env PATH = $ PATH $ @'”, ale dostaję „env: wp: Odmowa
dostępu
przepraszam, „wp” to skrypt
user564448,
Spróbuj wykonać inny krok, o którym wspomniałem.
devav2
1
Przeczytaj tutaj , powinieneś użyćsudo su -p
devav2
2

Możesz zachować wartość $PATHpodczas używania sudo. Użyj, visudoaby dodać $PATHdo listy zmiennych, które chcesz zachować. Linia taka jak poniżej /etc/sudoerspowinna załatwić sprawę:

Defaults env_keep += "PATH"
Dennis Kaarsemaker
źródło
1

takie jest zachowanie sudo w ubuntu ..

na przykład uruchom następujące polecenie

echo 'echo $PATH' | sh

i niż ten

echo 'echo $PATH' | sudo sh 

widzisz, że wynik jest inny! aby uniknąć różnych ścieżek, umieść następujące w ~ / .bashrc

alias sudo='sudo env PATH=$PATH'
Christopher Jahnke
źródło
Po wstawieniu aliasu sudo = 'sudo env PATH = $ PATH' do mojego .bashrc, dostaję "env: wp: Odmowa
dostępu
-1

Możesz także przenieść plik do katalogu używanego sudoers:

    sudo mv $HOME/bash/script.sh /usr/sbin/ 
LeGilles
źródło