Uruchamianie skryptu jako użytkownik z konta root

Tematy związane z oprogramowaniem, instalacją, konfiguracją
murgal
Posty: 39
Rejestracja: 30 października 2010, 15:12
Lokalizacja: Kalisz

Uruchamianie skryptu jako użytkownik z konta root

Post autor: murgal »

Witam.

Mam taki problem, chciałbym aby skrypt start.sh uruchamiał konkretny użytkownik, a nie jako root. Więc zrobiłem coś takiego:

Kod: Zaznacz cały

 #!/bin/bash
  2 #########################
  3 # Start serwer
  4 #########################
  5 su [b]nazwa_użytkownika[/b]
  6 cd /home/[b]nazwa_użytkownika[/b]/hlds_l/
  7 ./proces
Ale nadal proces uruchamia jako root, a nie jako użytkownik.
Dlaczego?
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Tak jak to zrobiłeś, to to nie zadziała. Musisz zrobić:

Kod: Zaznacz cały

su nazwa_użytkownika -c 'jakieś_polecenie'
Albo potem cały skrypt uruchom za pomocą powyższego przykładu z odpowiedniego użytkownika.
murgal
Posty: 39
Rejestracja: 30 października 2010, 15:12
Lokalizacja: Kalisz

Post autor: murgal »

Czyli np

Kod: Zaznacz cały

#!/bin/bash 
######################### 
# Start serwer
########################
su uzytkownik -c 'cd /home/[B]nazwa_użytkownika[/B]/hlds_l/'
su uzytkownik -c './proces'
zadziała?
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Nie, nie zadziała. Jak byś sprawdził, to byś wiedział ;) Musiałbyś oba polecenia podać jako jeden parametr dla su, bo w Twoim przykładzie przy drugim poleceniu i tak będziesz w katalogu z którego odpalasz skrypt, a nie w tym do którego przeszedłeś w poprzednim "su". Jeśli masz kilka lub kilkanaście poleceń które chcesz wykonać z innego użytkownika, łatwiej będzie jeśli napiszesz normalny skrypt, a potem uruchomisz go przez su z tego użytkownika.
Awatar użytkownika
xmaster
Junior Member
Posty: 558
Rejestracja: 13 stycznia 2009, 08:19
Lokalizacja: /dev/piotrków tryb.

Post autor: xmaster »

A nie prościej tak:

Kod: Zaznacz cały

su uzytkownik -c 'sh /home/nazwa_użytkownika/hlds_l/proces'
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

xmaster, chyba nie będzie mu łatwiej, bo z tego co się orientuję, to tą binarkę trzeba uruchomić z tego katalogu w którym się ona znajduje, a w którym są przy okazji pliki konfiguracyjne i biblioteki.

Ewentualnie może też zrobić

Kod: Zaznacz cały

su -c 'cd /gdzieśtam && ./uruchom_cośtam'
murgal
Posty: 39
Rejestracja: 30 października 2010, 15:12
Lokalizacja: Kalisz

Post autor: murgal »

I niby wszystko działa, ale teraz kolejny problem, skrypt nie chce się uruchamiać z poziomu php. Zawartość php:

Kod: Zaznacz cały

<?PHP

$test = system("sh /cs/start.sh");
echo $test;

?>
Gdy uruchamiam:

Kod: Zaznacz cały

start.sh
z konsoli, to działa.
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

No bo pewnie serwer www nie działa z roota i przy wywołaniu su pyta o hasło. Trzeba było od razu napisać co chcesz zrobić. Do tego powinieneś użyć sudo. Poszukaj na forum, było kilka razy. Może jakaś zdalna ręka admina by Ci się przydała? ;)
murgal
Posty: 39
Rejestracja: 30 października 2010, 15:12
Lokalizacja: Kalisz

Post autor: murgal »

Nie, wolę sam do wszystkiego dojść.

Masz racje, woła o hasło użytkownika, próbowałem do pliku /etc/sudoers dopisać:

Kod: Zaznacz cały

 %sudo ALL=NOPASSWD: screen, screen -A -m -d -S cs1 ./hlds_run -autoupdate -g    ame cstrike -master +port 27016 +maxplayers 12 +exec server.cfg +map de_dust     +rcon_password %%%%%
Ale nadal woła o hasło, a o ile dobrze zrozumiałem dodając tą linijkę wywołującą te polecenia nie potrzeba hasła?
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Eh, zrób to jak Pan Bucek przykazał. Napisz normalny skrypt w którym nie używasz su (bo i po co, skoro i tak używasz sudo), a do sudo dopisz możliwość uruchamiania tego skryptu przez użytkownika którego podawałeś w su.
ODPOWIEDZ