Użycie sudo w skrypcie i zmienna $PATH

Tematy związane z oprogramowaniem, instalacją, konfiguracją
virgo
Posty: 2
Rejestracja: 20 listopada 2010, 13:15

Użycie sudo w skrypcie i zmienna $PATH

Post autor: virgo »

Jest to mój pierwszy post na tym forum, więc wypadałoby się przywitać. Witam więc i od razu przechodzę do rzeczy.

Mam pewien problem z uruchamianiem programów jako super użytkownik przy pomocy sudo z nietypowych lokalizacji. Mam stworzony bowiem katalog ~/bin, w którym głównie składuję wykonywalne skrypty automatyzujące pewne zadania, które wykonuję na co dzień. Wszystko wydaje się piękne, dopóki skrypty nie potrzebują na żadnym etapie praw roota do wykonywania zadań. Tak było do dzisiaj.
Stworzyłem bowiem skrypt (o nazwie aptu), który czasowo aktywuję lub dezaktywuję pewne repozytoria w /etc/apt/sources.list.d, a jak wiadomo, celu edycji plików w katalogu /etc muszę posiadać prawa roota.

I tu właśnie rodzi się problem.

Chciałbym, żeby ten skrypt był łatwy w uruchamianiu, tj. żeby uruchamiał się poprzez polecenie:

Kod: Zaznacz cały

sudo aptu
Niestety, w tym momencie napotykam spore trudności:

Kod: Zaznacz cały

sudo aptu
sudo: aptu: command not found
Poniżej podaję wykaz kilku komend, które mogą okazać się przydatne (skupiłem się na listowaniu ustawień zmiennej $PATH, bo wydaje mi się, że w tym leży problem):

Kod: Zaznacz cały

> which sudo
/usr/bin/sudo
> echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games:/home/virgo/bin
> sudo echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games:/home/virgo/bin
> sudo env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
W podręczniku systemowym dla sudo wyczytałem co następuje:
&quot pisze:Note, however, that the PATH environment variable is further modified in Debian because of the use of the SECURE_PATH build option.
Nie rozumiem dlaczego polecenia ,,echo $PATH'', w związku z powyższym, są takie same w przypadku używania i nieużywania polecenia sudo.

Tak czy siak, pewnym obejściem problemu (działającym), które znalazłem na ,,stackoverflow'', jest stworzenie aliasu:

Kod: Zaznacz cały

alias sudo='sudo env PATH=$PATH'
Jak wspomniałem jest to obejście problemu, które nie do końca mnie satysfakcjonuje.

W związku z tym mam pytanie. Czy jest możliwe takie używanie sudo, żeby pomijał w jakiś sposób opcję ,,SECURE_PATH'', ewentualnie stworzenie jakichś warunków w /etc/sudoers? Przebudowywanie sudo uważam za wyjście ostateczne.

Próbowałem jeszcze dezaktywować linijkę w sudoers:

Kod: Zaznacz cały

Defaults env_reset
lecz bez skutku. Być może potrzebny jest restart pewnych procesów lub całego systemu. Teraz wychodzę z domu, więc sprawdzę jeszcze zachowanie się sudo gdy wrócę.

Byłbym wdzięczny za jakieś podpowiedzi odnośnie konfiguracji sudo, żeby nie podmieniało zmiennej PATH.
pyrion
Posty: 42
Rejestracja: 13 czerwca 2009, 12:04

Post autor: pyrion »

Skrypt umieść w /usr/local/sbin.
ODPOWIEDZ