Kirjoittaja Aihe: Palveluiden käynnistys ei-roottina  (Luettu 4037 kertaa)

ihti

  • Käyttäjä
  • Viestejä: 62
    • Profiili
Palveluiden käynnistys ei-roottina
« : 08.08.06 - klo:12.50 »
Nettipalveluitahan ei pitäisi ajaa roottina mutta ainakin jotkut pitäisi asentaa esim /var -iin ja sudo:lla. Mikä on paras tapa laittaa näitä käynnistymään automaattisesti koneen käynnistyessä ns "jonkin toisen käyttäjän toimesta" ?

LittleLion

  • Käyttäjä
  • Viestejä: 1232
    • Profiili
    • http://koti.mbnet.fi/littleli/
Re: Palveluiden käynnistys ei-roottina
« Vastaus #1 : 08.08.06 - klo:13.52 »
Nettipalveluitahan ei pitäisi ajaa roottina mutta ainakin jotkut pitäisi asentaa esim /var -iin ja sudo:lla. Mikä on paras tapa laittaa näitä käynnistymään automaattisesti koneen käynnistyessä ns "jonkin toisen käyttäjän toimesta" ?

Riippuu palvelusta. Monissa (kuten esim apache) on mahdollisuus määrittää minkä nimisellä käyttäjätunnuksella kyseistä palvelua ajetaan.

ihti

  • Käyttäjä
  • Viestejä: 62
    • Profiili
Re: Palveluiden käynnistys ei-roottina
« Vastaus #2 : 08.08.06 - klo:17.03 »
Ei ole apache, vaan esim TeamSpeak..

ihti

  • Käyttäjä
  • Viestejä: 62
    • Profiili
Re: Palveluiden käynnistys ei-roottina
« Vastaus #3 : 09.08.06 - klo:17.33 »
..niin miten se pitäisi tehdä?? Onko jollakin tiedossa jossakin howto? itse en kyllä löytänyt.

LittleLion

  • Käyttäjä
  • Viestejä: 1232
    • Profiili
    • http://koti.mbnet.fi/littleli/
Re: Palveluiden käynnistys ei-roottina
« Vastaus #4 : 11.08.06 - klo:09.18 »
Ei ole apache, vaan esim TeamSpeak..

Joo tuo apache oli vain esimerkki. Mistä löydän tuon TeamSpeak:in asennus paketin?

ihti

  • Käyttäjä
  • Viestejä: 62
    • Profiili
Re: Palveluiden käynnistys ei-roottina
« Vastaus #5 : 11.08.06 - klo:11.19 »
Ei ole apache, vaan esim TeamSpeak..

Joo tuo apache oli vain esimerkki. Mistä löydän tuon TeamSpeak:in asennus paketin?

Se löytyy täältä:
ftp://ftp.freenet.de/pub/4players/teamspeak.org/releases/ts2_server_rc2_20201.tar.bz2

teprrr

  • Käyttäjä
  • Viestejä: 304
    • Profiili
Re: Palveluiden käynnistys ei-roottina
« Vastaus #6 : 11.08.06 - klo:12.28 »
Käynnistysskriptien ajo tapahtuu roottina, eli siitä vaikka sudon/su:n kautta käynnistät kyseisen palvelimen ihan niin kuin roottinakin.

ihti

  • Käyttäjä
  • Viestejä: 62
    • Profiili
Re: Palveluiden käynnistys ei-roottina
« Vastaus #7 : 11.08.06 - klo:21.40 »
Käynnistysskriptien ajo tapahtuu roottina, eli siitä vaikka sudon/su:n kautta käynnistät kyseisen palvelimen ihan niin kuin roottinakin.

Siis tuvallisuuden maksimoimiseksi tässähän on ideana pyörittää palvelua sellaisella käyttäjällä jolla ei ole sallittua ajaa administrointikomentoja. Siis jos käyttää sudoa niin silloinhan se on melkein sama kuin ajaisi niitä roottina, eikö?

Tuplanolla

  • Käyttäjä
  • Viestejä: 1420
  • Reg. Linux user #423604
    • Profiili
Re: Palveluiden käynnistys ei-roottina
« Vastaus #8 : 12.08.06 - klo:23.28 »
Käynnistysskriptien ajo tapahtuu roottina, eli siitä vaikka sudon/su:n kautta käynnistät kyseisen palvelimen ihan niin kuin roottinakin.

Siis tuvallisuuden maksimoimiseksi tässähän on ideana pyörittää palvelua sellaisella käyttäjällä jolla ei ole sallittua ajaa administrointikomentoja. Siis jos käyttää sudoa niin silloinhan se on melkein sama kuin ajaisi niitä roottina, eikö?

Se on sama. sudo vain vaihtaa käyttäjää väliaikaisesti. (minun tietääkseni ainakin)
Lisää [ratkaistu] ketjun ensimmäisen viestin otsikkoon, kun ongelma ratkeaa!

teprrr

  • Käyttäjä
  • Viestejä: 304
    • Profiili
Re: Palveluiden käynnistys ei-roottina
« Vastaus #9 : 13.08.06 - klo:21.35 »
Se on sama. sudo vain vaihtaa käyttäjää väliaikaisesti. (minun tietääkseni ainakin)
Jeps, eli sudo -u <käyttäjä> <komento>.

LittleLion

  • Käyttäjä
  • Viestejä: 1232
    • Profiili
    • http://koti.mbnet.fi/littleli/
Re: Palveluiden käynnistys ei-roottina
« Vastaus #10 : 14.08.06 - klo:07.57 »
Eli itse ainakin asentasin tuon /usr/local kansion alle. Tekisin uuden käyttäjän tuota varten ja antaisin sille oikeudet tuohon kansioon.
Sitten laittaisin /etc/init.d/ kansioon tämän muokatun käynnistys skriptin: http://koti.mbnet.fi/~littleli/teamspeak2-server
ja asentaisin tuon TeamSpeak serverin käynnistymään kun kone käynnistetään komennolla: sudo update-rc.d teamspeak2-server defaults

ihti

  • Käyttäjä
  • Viestejä: 62
    • Profiili
Re: Palveluiden käynnistys ei-roottina
« Vastaus #11 : 14.08.06 - klo:18.04 »
Eli itse ainakin asentasin tuon /usr/local kansion alle. Tekisin uuden käyttäjän tuota varten ja antaisin sille oikeudet tuohon kansioon.
Sitten laittaisin /etc/init.d/ kansioon tämän muokatun käynnistys skriptin: http://koti.mbnet.fi/~littleli/teamspeak2-server
ja asentaisin tuon TeamSpeak serverin käynnistymään kun kone käynnistetään komennolla: sudo update-rc.d teamspeak2-server defaults


Tuossa käynnistys-skriptissäsi on kohta:
Koodia: [Valitse]
if [ "$UID" != "0" ]; then
echo ERROR: You are not root!
exit 1
Tarkoittaako se että teamspeakkia ei käynnistetä ellei tsuser ole admin? -Tarkoitushan on saada TS käyntiin nimenomaan ei-roottina.

Sitten toinen kymysys, että jos käyttää 'Preferences'-'Sesions'-'Startup programs'-listaa niin, että TS käynnistyy automaattisesti vasta sisäänkirjautuessa, niin sehän ei toimi kun komentoa ei anneta samasta hakemistosta käsin. Elikkä saako sinne asetettettua komennon mikä käynnistää TS:n ./teamspe...-tyylillä vai pitäisikö tehdä erillinen skriptitiedosto missä ensin mennään ko hakemistoon? (wintoosan battitiedoston tyyliä)

raimo

  • Käyttäjä
  • Viestejä: 4191
  • openSUSE Tumbleweed
    • Profiili
Re: Palveluiden käynnistys ei-roottina
« Vastaus #12 : 14.08.06 - klo:18.35 »
Tuossa käynnistys-skriptissäsi on kohta:
Tarkoittaako se että teamspeakkia ei käynnistetä ellei tsuser ole admin? -Tarkoitushan on saada TS käyntiin nimenomaan ei-roottina.

Ei pääse muut sisään tuohon kuin root, poista tuo IF-lohko niin se toiminee kaikilla käyttäjillä.
Koodia: [Valitse]
else
if [ "$UID" != "0" ]; then
echo ERROR: You are not root!
  exit 1
tai vaihtoehtoisesti, vaihda 0:n tilalle halutun käyttäjän UID,
numero näkyy kun komentoriville sanoo echo $UID
jolloin vain ko. käyttäjä saa ajaa skriptiä.

eikäku, korjasin poistettavaa, else pitää poistaa ja fi jättää, jotta 1. if-lohko toimii ;)
« Viimeksi muokattu: 14.08.06 - klo:19.25 kirjoittanut raimo »
Tietä käyden tien on vanki. Vapaa on vain umpihanki.
Aaro Hellaakoski

LittleLion

  • Käyttäjä
  • Viestejä: 1232
    • Profiili
    • http://koti.mbnet.fi/littleli/
Re: Palveluiden käynnistys ei-roottina
« Vastaus #13 : 15.08.06 - klo:16.11 »
Eli itse ainakin asentasin tuon /usr/local kansion alle. Tekisin uuden käyttäjän tuota varten ja antaisin sille oikeudet tuohon kansioon.
Sitten laittaisin /etc/init.d/ kansioon tämän muokatun käynnistys skriptin: http://koti.mbnet.fi/~littleli/teamspeak2-server
ja asentaisin tuon TeamSpeak serverin käynnistymään kun kone käynnistetään komennolla: sudo update-rc.d teamspeak2-server defaults


Tuossa käynnistys-skriptissäsi on kohta:
Koodia: [Valitse]
if [ "$UID" != "0" ]; then
echo ERROR: You are not root!
exit 1
Tarkoittaako se että teamspeakkia ei käynnistetä ellei tsuser ole admin? -Tarkoitushan on saada TS käyntiin nimenomaan ei-roottina.

Siis ideanahan tuossa oli se, että tuo sripti pitää ajaa roottina niin kuin yleensäkkin palveluiden käynnistys scriptit. Ja root ajaa sitten tuon komennon käyntiin tsuser käyttäjänä.
( sudo -u $TSUSER $SERVER -PID=$PIDFILE ) Ja tietysti se, että kun root ajaa sudo komennon niin salasanaa ei enää kysytä koska käyttäjä on jo root ;D


Lainaus
Sitten toinen kymysys, että jos käyttää 'Preferences'-'Sesions'-'Startup programs'-listaa niin, että TS käynnistyy automaattisesti vasta sisäänkirjautuessa,

Yleensä serveri palvelut ajetaan ylös koneen käynnistyessä root-käyttäjän toimesta, mutta haluat tuon välttämättä noin ajaa niin poista skriptistä rivit:
Koodia: [Valitse]
if [ "$UID" != "0" ]; then
echo ERROR: You are not root!
exit 1
fi
Ja varmista, että käyttäjällä jolla tuota ajetaan käyntiin on oikeudet käyttää sudoa ja tehdä kaikki muukin mitä skripti vaatii. Tosin nyt sudo komento kysyy salasanaa, joten se pitäisi pystyä jotenkin syöttämään skriptille.


Lainaus
niin sehän ei toimi kun komentoa ei anneta samasta hakemistosta käsin. Elikkä saako sinne asetettettua komennon mikä käynnistää TS:n ./teamspe...-tyylillä vai pitäisikö tehdä erillinen skriptitiedosto missä ensin mennään ko hakemistoon? (wintoosan battitiedoston tyyliä)
rivi: SERVER=/usr/local/tss2_rc2/server_linux
tekee sen, että tuo skripti tiedää mistä tuota server_linux komentoa pitää etsiä. Eli tuohon polkuun pitää tietysti laittaa se polku jonne tuon softan olet laittanut.