Strona 1 z 2

Uruchamianie skryptu jako użytkownik z konta root

: 14 listopada 2010, 19:29
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?

: 14 listopada 2010, 20:11
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.

: 14 listopada 2010, 20:48
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?

: 14 listopada 2010, 20:59
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.

: 14 listopada 2010, 21:00
autor: xmaster
A nie prościej tak:

Kod: Zaznacz cały

su uzytkownik -c 'sh /home/nazwa_użytkownika/hlds_l/proces'

: 14 listopada 2010, 21:07
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'

: 14 listopada 2010, 21:32
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.

: 15 listopada 2010, 17:54
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? ;)

: 15 listopada 2010, 18:26
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?

: 15 listopada 2010, 18:37
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.