root widzi komend

Ogólne pytania dotyczące systemu
Pad19
Posty: 29
Rejestracja: 11 listopada 2010, 11:32

root widzi komendę a user nie

Post autor: Pad19 »

Witam,

jest ffmpeg skompilowany ze źródeł. Nie znajduje sie w /usr/bin i nie wiem dokładnie gdzie się znajduje :) problem obecnie dotyczy ffmpeg and pytanie zadam ogóle.
Jeśli wykonuję polecenie np: ffmpeg i działa ono jako root a jako użytkownik pokazuje sie:
ffmpeg: command not found

Co należało by sprawdzić poprawić w systemie? Gdzie jest zapisana informacja o komendach np: ffmpeg
Awatar użytkownika
Rafal_F
Moderator
Posty: 2350
Rejestracja: 29 sierpnia 2008, 16:45

Post autor: Rafal_F »

Po wydaniu polecenia w poszukiwaniu programu sprawdzane są katalogi zawarte w zmiennej PATH, możesz wyświetlić jej zawartość wykonując polecenie:

Kod: Zaznacz cały

echo $PATH
Zmienna ta przyjmuje różne wartości dla roota i dla zwykłego użytkownika. Zmienna PATH dla roota zawiera 3 dodatkowe katalogi:

Kod: Zaznacz cały

/usr/local/sbin
/usr/sbin
/sbin
W tych lokalizacjach zawarte są programy służące do uruchomienia lub zmiany konfiguracji systemu. Do poprawnego działania wymagają uprawnień root'a, więc zwykłemu użytkownikowi i tak się nie przydadzą.
Programy instalowane ze źródeł poleceniem:

Kod: Zaznacz cały

make install
zazwyczaj (to zależy od autora źródeł, developerzy Debiana nie wiele mają tu do powiedzenia) instalowane są w drzewie:

Kod: Zaznacz cały

/usr/local
W związku z tym poszukiwania programu zacząłbym w katalogach:

Kod: Zaznacz cały

/usr/local/bin
/usr/local/sbin
W tym przypadku najbardziej poprawny jest ten pierwszy. Jak widać powodów problemu może być kilka (przynajmniej 2). Zacznij od zlokalizowania programu, powinien znajdować się w /usr/local/bin. Jeżeli tam jest to sprawdź swoją zmienną PATH, wcześniej napisałem jak sprawdzić jej zawartość. Jeżeli jakimś cudem brakuje Ci tam /usr/local/bin, to edytuj plik:

Kod: Zaznacz cały

/etc/profile
i zmień odpowiednią linijkę. U mnie jest to linia 7:

Kod: Zaznacz cały

PATH="[B]/usr/local/bin[/B]:/usr/bin:/bin:/usr/local/games:/usr/games"
To krótki plik, jak go przejrzysz powinieneś połapać się co i jak. Jeżeli program zainstalował się gdzieś indziej, to albo go przeinstaluj (tutaj napisane jak zmienić katalog instalacyjny: http://trac.ffmpeg.org/wiki/CompilationGuide/Generic niestety trzeba to zrobić na poziomie configure), albo dodaj katalog gdzie zainstalowany jest program do zmiennej PATH, wyżej napisałem co i jak.
pabliszer
Posty: 61
Rejestracja: 07 października 2009, 12:20

Post autor: pabliszer »

Można również użyć polecenia whereis

Kod: Zaznacz cały

whereis [color=#333333]ffmpeg[/color] 
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2324
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Post autor: LordRuthwen »

Generalnie do tego służy polecenie

Kod: Zaznacz cały

type

Kod: Zaznacz cały

 type avconv
avconv jest /usr/bin/avconv
Przyczyną tego, że root widzi a użytkownik nie tost pewnie to, że plik znajduje się w sbin a nie w bin, czyli wymaga podniesienia uprawnień do wykonania.
Awatar użytkownika
Yampress
Administrator
Posty: 6400
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

jeśli wiesz gdzie jestr dany program np w sbin, a root go widzi a TY nie to możesz spróbować zastartować go z pełną ścieżką = tam gdzie się on znajduje...

Kod: Zaznacz cały

$/sbin/program
Co nie oznacza, że będzie pracował tak jak spod roota. Bo część programów wymaga roota aby działało z racji że wywołują pewne funkcje.
ODPOWIEDZ