Játékszerver vezérlése webes felületről

Adott egy osidok ota jol mukodo jatekszerver vezerlo menurendszer amit SSHn keresztul beloginolva lehet elerni. Szinte barmilyen jatekot kepes elvezerelni. Az SSH hozzaferesbol adodoan ertelemszeruen minden user a sajat UID-jevel futtatja a jatekokat. Na most ezt szeretnem megvalositani egy webes feluleten ugy, hogy egyelore ezzel parhuzamosan megmarad az SSH is. A scriptek nagy resze perl script, kisebb resze bash, a webes dolgokat is perlben szeretnem megirni mivel igy csak a meglevo dolgokat kellene kiegeszitenem. A cucc nem hasznal Mysql szervert, minden egy config fileban tarolodik, kiveve a hozzaferesek (/etc/passwd, /etc/shadow).
Es akkor a problemak a kovetkezok:
- Hogy veszem ra az Apacheot hogy login utan a menurendszer mar ne www-data -kent fusson hanem a sajat userkent?
- A logint hogy oldjam meg ugy, hogy ezzel parhuzamosan mukodjon az SSH eleres is?

Hozzászólások

Hát akkor kell írnod egy daemon-t amit minden egyes felhasználó nevében el kell indítanod. Pl. egy tcp porton figyel és várja a parancsokat (persze authentikációval meg mindennel el kell látnod). És azt is figyelned kell, hogy mindig fusson, nehogy kilőjék a userek. Azt nem ajánlom, hogy csak eggyet futtasd root-ként, mert az nem igazán biztonságos :)

Az otlet nem rossz. De akkor mar van ennel jobb: Felrakok egy osdi telnet szervert ami csak localhoston latszodik es az user minden gombnyomasa utan lefut egy olyan script ami bejelentkezik es lefuttatja az adott parancsot. Viszont akkor mar olyan kene, hogy a telnetes loginolas egy kulon fileba loggoljon, ne pedig az auth.log es tarsaiba `szemeteljen`, mivel minden weben kiadott parancs bejelentkezessel jar.

Na, elkeztem kiserletezni, es erdekes dolgot vettem eszre.
Most nem jatekszerverrel csinalom hanem egy Icecast2 szerverrel. Az Icecast2 tulaja teszt user lett es beallitottam neki egy Set-UIDot, hogy webfeluleterol inditva teszt userkent fusson. Ez rogton elsore tokeletesen mukodik. Viszont az Icecast2 kapott egy olyan beallitast hogy ha egy adott mountpointon megszakad az adas akkor inditson el egy scriptet. Na az a script mar ujra www-userkent fut. Poenbol annak a scriptnek is atallitottam a tulajat teszt userre es beadtam neki a Set-UIDot de o akkor is www-data -kent akarja inditani (/bin/bash: /home/kiserlet/teszt/scripts/.disconnect: Hozzáférés megtagadva). Na ezt magyarazza el nekem valaki, hogy egy teszt userkent futo program miert akarja a scriptet www-datakent inditani.
Valoszinu nem ezzel a modszerrel lesz megoldva a jatekszerver vezerles, de van egy olyan erzesem hogy akkor is bele fogok futni ebbe a jelensegbe.

Szerintem először is:
1. ülj le, találd ki, mit akarsz
2. ha letisztázódott, külön-külön kérdezz

Első nekifutásra:
1. apache su, független perltől, php-től mindentől (rendszergazdai feladat, tessék apache doksikat olvasni)
2. honlapgenerálás perlből (programozói feladat, keress tutorialokra)
3. login, na itt teljesen konfjúzd vagy, mi köze lenne a webes loginnak az ssh eléréshez? Miért is zárná ki?!?

Egyébként meg a következőt javaslom:
1. webes felület www-data nevében fut, authentikál stb., kattintásra kiköp egy usernevet meg egy parancsot
2. írsz egy kis wrappert, ami fogadja a parancsot, és meghívja ua-t, mint amit most az ssh-ból hívogatnak
3. a webes felület sudo-val a megadott user nevében meghívja a wrappert, így az már nem www-data nevében fut.
Előnyök: könnyen megvalósítható, és ha valaki felnyomja az apache-ot, akkor is max ezt az egy wrappert tudja futtatni egy másik user nevében.