Sziasztok. Van egy szerverem ami ha becrashel elég nyűgös restartolni. (Nem a komplett szervert akarom) csak a játékot.
Csináltam egy php file-t:
`<?php
$scriptPath = '/home/jatek/run_dorun.sh';
$output = [];
$returnVar = 0;

// A script futtatása
exec("bash $scriptPath 2>&1", $output, $returnVar);

// Visszajelzés a felhasználónak
if ($returnVar === 0) {
echo "A parancs sikeresen lefutott!";
} else {
echo "Hiba történt a parancs végrehajtása során.";
echo "Visszatérési kód: $returnVar\n";
echo "Kimenet: " . implode("\n", $output);
}
?>Ez mind szép és jó. De ugye ezt vu2003- FTP-ről futtatom. Semmi gond.
De pl ha így hívom meg root-ként terminálban simán jó:
root@panel:~# su - jatekserver /home/jatekserver/run_dorun.sh

[ OK ] Stopping jatekserver: Graceful: sending "quit": 2: OK
[ OK ] Startingjatekserver: sv_hostname Jatekserverem`

Ez van az sh fileban:
#!/bin/bash
cd /home/jatekserver || exit 1
./jatekserver restart

Az a bajom,hogy a php kódon keresztül nem fut le a kód:
Permission denied The current user (vu2003) Tehát ez a rész nem müködik:

Valaki tud esetleg segíteni,hogy le tudjon futni? visudoba beraktam már de olyan mintha amint a kódot megnyitom a
su - jatekserver nem menne le.

    vagy ha berakom az sh fileba vagy a php kódba erre lázad: Hiba történt a parancs végrehajtása során.Visszatérési kód: 1 Kimenet: su: must be run from a terminal

    Mert az a baj a játék adminoknak nem adok saját itthoni fizikai szerveremre ssh belépést.
    De nem az a kérdés hanem hogy lehet megoldani.

      Pl egy call of duty 2 szerveren igy megy root ssh belépés utána pl su -cod2server

      Utána
      ./cod2server restart
      De ezt root ként nem engedi és csak az adott user jogaival lehet.
      Ahigy megirtam a kodokat rootban az adott kód működik mindtha az adott user lennék. De php már dobja az lgsm pression deniedeket. Mert megindította de nem csinál semmit mivel az összes file az user engedélyezett és valamiért vu2003 lázad.

      oktopus

      oktopus játék adminoknak nem adok saját itthoni fizikai szerveremre ssh belépést

      miért nem?

        sömike mert a témára kértem megoldást és nem offot kérdésekkel. Ha nem tudsz érdemleges dologgal segíteni haladj át a témán a moderátorok segítségét köszönöm a szabályzat betartása miatt. Hülye provokálás nem kell részemről.

          oktopus
          Lassabban... segítséget kértél, akkor ne vagdalkozz.
          sömike érdeklődött, te meg leírod, hogy miért nem akarod és ezzel vége.

          A többi részét tartsd meg magadnak!

            Htibi leirtam mit szeretnek. A jatek adminik valszeg nem linux rendszergazdak. Aminmegoldast leirtam azvazert van valszeg mert ez lenne a jarhatonutja. Illetve egy komplett szervert nem fogok veszelyeztetni. De logikusan belegondolsz akkor megérted.

            Amúgy pedig amikor megindítom a ./cod2server restart programot ahhoz tartozó komplett fájl rrndszwr kéri az eredeti usert és akkor derülr ki hogy webről vagyok. Mert az sh ban még ott van a sudo user. De kikor a programot ami a szervert kezeli már a másikban nem töltődik be.

            oktopus
            Így első blikkre azt mondanám, hogy hiába tudsz sudozni, ha a júzered nem fér hozzá a scriptedhez és nem tudja azt futtatni. A júzeredet (www-data) tedd bele egy olyan csoportba, amely hozzáfér a scriptedhez és tudja is futtatni azt.
            VAGY
            Indítsd a bash scriptedet sudoval a php scriptből. exec("sudo -u usered bash $scriptPath2>&1", $output, $returnVar); PErsze a userednek amit megadsz kell lennie sudo jogának. PErsze célszerű ilyenkor úgy megadni a visudoban hogy csak ezt a fájlt tudja sudozni....

              Kittus2 szia igen ugy csinaltam. De mikor elkezd fitni megallutja aajatekszervert de elinditani mar nem tudja. Php scriptben is megirtam. Visudoban trrmeszetesen csak az sh engedtem neki. De php scriptben meg sudo van holnap felrakom telorol vagyok.

              sudo /home/jatekserver/jatekserver restart
              Ezt kellene futtasd, de a vu2003 userednek nincs sudo joga.
              A PHP scriptedet hogyan futtatod? Cronnal vagy böngészőből?

              Feltételezem böngészőből távolról. Akkor további kérdés milyen szerver fut? Apache2? Nginx? Csak mert Kittus arra tippelt apache2, emiatt írta neked hogy a www-data userrel kezdj valamit Viszont te valami totál más userről írsz ami ki tudja hogy került a képbe? Megpiszkàltad az apache beállítását is?

              Van amúgy az ilyen és hasonló esetekre egy szakállas ősrégi trükk. A PHP scripttel csak létrehozol egy üres fájlt. Ott a saját kis szemétdombján. Beraksz cronba egy watchert, ami akkor reagál ha megjelenik ez a fájl. A watcher sima bash, és a root cron futtatja root joggal. A php sima php, az apache2 futtatja a saját jogaival. Ennek az a szépsége hogy nem kell vesződj a jogokkal. Senkit semmilyen csoportba nem kell berakni, nincs exec a phpben, egyszóval megkönnyíti ezt a dolgot. A watcher minden percben fut, azaz ha 00:00:01-kor keletkezik a fájl, akkor 59s múlva lesz végrehajtva a restart. Szerintem elfogadható kompromisszum 1-2 perc delay.

              És itt ezt lehet még tovább szépíteni, megakadályozni hogy egyszerre többször legyen a restart meghívva. Egyszóval szépen részleteiben ki lehet dolgozni atom biztosra a php oldalt is és a bash oldalt is külön külön.

              • klt kedveli ezt.

              Egy másik dolog amire felfigyeltem, hogy ismét csak kevered a jogokat:

              root@panel:~# su - jatekserver /home/jatekserver/run_dorun.sh

              Ez nem root joggal futtatott script. jatekserver joggal futtatott, mintha a jatekserver user csinálná!!!

              Nem mindegy mit kókányolsz össze, és hogy valójában mit kellett volna elérni és csinálni.

                bartaszili szia az a lényeg a restart csak nem root felhasználó használhatja. Másodszor nem akarom a cront ilyenekkel baxtatni. Kitaláltam annó apachera egy php kódot ami systemctl restartolt. Ezt fogom tenni ugyanúgy. Ezen dolgok nginx alatt futnak. Eredetileg njncsen hozzá systemd de csináltam mert kell a napi reset a játékszervereknek. Vu2003 ugyanaz mjnt a wwwdata user. Rootként oedig azért olvastad mivel tiltott a játékszerver futtatása sudoval. És rootban teszteltem a sh filet.

                Hajnali 4ig voltam fenn de reggel 6 kor kezdtem munkahelyen. Hazaérek megcainálom és látni fogjátokbaz egyszerű mezei megoldást és nem kell se cron semmi kokler dolog. És működik.

                  oktopus
                  Ne szerénykedj, megtisztelő tőled tanulni!

                  Asszem 4 vagy 3 éve írtam hasonlót. Egy url shortenerhez ami adatbázis alapú php. Az a lényege,hogy van mondjuk egy link és saját aldomain mögé rakod persze arra is megvannak a kódok,hogy ott mit hogy vezéreljen. És egy gombnyomásra generáljon le új linket az adatbázisban és abból hozzon létre aldomain linkeket így az eredeti link titkos maradt. A generálás után pedig apache restart volt. De még proxy szerver cseréknél is volt valami mert a fő vps-en volt a proxy szerverek linkjei és asszem azoknak meg külsőleg kellett restart, de az gázos volt a megoldása.