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ć:
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ć
: 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:
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.