User joggal inditani valamit rendszerinduláskor?

Fórumok

User joggal inditani valamit rendszerinduláskor?

Hozzászólások

Sziasztok!

Azt szeretném valahogy kisakkozni, hogy a p2p hálózatra felcsatlakozó szoftver (mlnet) induláskor elkezdjen futni, de semmi képpen nem root jogokkal, hanem úgy, mintha az erre a célra késztett 'p2p' felhasználó indítaná.
Gondoltam a sudo lesz a megoldás, felraktam, idáig jutottam a mannal:
'sudo -i -u p2p /home/p2p/mlnet/mlnet' dolgot kiadom root-ként, de azt mondja hogy nincs jog a futtatáshoz. Pedig a sudo configfile-ban rootnak all:all joga van, kell oda valami exec jog?
Vagy valami más megoldást kellene keresni? Tudom hogy a sudo veszélyes dolog, de ez csak egy otthoni gép a családnak... akik nem tudják konzolba elindítani az mlnetet más felhasználóként :) vagy legalábbis nem akarom őket ezzel terhelni, meg amúgy is érdekes a probléma...
Tudtok valami egyszerű megoldást?

Szerintem erre folosleges sudo(8) -t hasznalni. Erre boven eleg su(1) is,
mivel init kozben mindenkeppen rootken fut minden.
Valami ilyesmivel:

# su -l username /path/to/mlnet

[quote:3836e0dc6e="thuglife"]Szerintem erre folosleges sudo(8) -t hasznalni. Erre boven eleg su(1) is,
mivel init kozben mindenkeppen rootken fut minden.
Valami ilyesmivel:

# su -l username /path/to/mlnet

Ez igy nem lenne jo. A su-nak nincsenek kapcsoloi.
Igy helyesen:
[code:1:3836e0dc6e]# su username /path/to/mlnet[/code:1:3836e0dc6e]
vagy az ezzel ekvivalens valtozat:
[code:1:3836e0dc6e]# su - username /path/to/mlnet[/code:1:3836e0dc6e]
A -l az az ssh-nak a kapcsoloja usernev elott. A - kapcsolot is csak regi a szkriptek visszafele kompatibilitasa miatt hagytak meg.

[quote:e756f875d2="rigidus"][quote:e756f875d2="thuglife"]Szerintem erre folosleges sudo(8) -t hasznalni. Erre boven eleg su(1) is,
mivel init kozben mindenkeppen rootken fut minden.
Valami ilyesmivel:

# su -l username /path/to/mlnet

Ez igy nem lenne jo. A su-nak nincsenek kapcsoloi.
Igy helyesen:
[code:1:e756f875d2]# su username /path/to/mlnet[/code:1:e756f875d2]
vagy az ezzel ekvivalens valtozat:
[code:1:e756f875d2]# su - username /path/to/mlnet[/code:1:e756f875d2]
A -l az az ssh-nak a kapcsoloja usernev elott. A - kapcsolot is csak regi a szkriptek visszafele kompatibilitasa miatt hagytak meg.

Nincs igazad. su(1) nak vannak kapcsoli.
http://www.die.net/doc/linux/man/man1/su.1.html
http://www.openbsd.org/cgi-bin/man.cgi?query=su&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html

Mielott akarmit is irsz eloszor nezz korul. Addig folosleges okoskodni.

[quote:8ed1a9bc49="rigidus"] A su-nak nincsenek kapcsoloi.

De vannak.

[quote:8ed1a9bc49="rigidus"]
[code:1:8ed1a9bc49]# su username /path/to/mlnet[/code:1:8ed1a9bc49]
vagy az ezzel ekvivalens valtozat:
[code:1:8ed1a9bc49]# su - username /path/to/mlnet[/code:1:8ed1a9bc49]

Ezek nem ekvivalensek.

[quote:86cb061578="rigidus"][quote:86cb061578="thuglife"]Szerintem erre folosleges sudo(8) -t hasznalni. Erre boven eleg su(1) is,
mivel init kozben mindenkeppen rootken fut minden.
Valami ilyesmivel:

# su -l username /path/to/mlnet

Ez igy nem lenne jo. A su-nak nincsenek kapcsoloi.
Igy helyesen:
[code:1:86cb061578]# su username /path/to/mlnet[/code:1:86cb061578]
vagy az ezzel ekvivalens valtozat:
[code:1:86cb061578]# su - username /path/to/mlnet[/code:1:86cb061578]
A -l az az ssh-nak a kapcsoloja usernev elott. A - kapcsolot is csak regi a szkriptek visszafele kompatibilitasa miatt hagytak meg.

AFAIK a - os es a nem - os valtozat kozott az a kulombseg, hogy - al login shellt kapsz nem - al pedig nem.

Ha a su username parancs formát használom, akkor nem fog megállni és jelszót kérdezni?

[quote:dfbb942d4f="dii"]Ha a su username parancs formát használom, akkor nem fog megállni és jelszót kérdezni?

rootként nem. És az init rootként fut.

[quote:37d1aa64b5="thuglife"][quote:37d1aa64b5="rigidus"][quote:37d1aa64b5="thuglife"]Szerintem erre folosleges sudo(8) -t hasznalni. Erre boven eleg su(1) is,
mivel init kozben mindenkeppen rootken fut minden.
Valami ilyesmivel:

# su -l username /path/to/mlnet

Ez igy nem lenne jo. A su-nak nincsenek kapcsoloi.
Igy helyesen:
[code:1:37d1aa64b5]# su username /path/to/mlnet[/code:1:37d1aa64b5]
vagy az ezzel ekvivalens valtozat:
[code:1:37d1aa64b5]# su - username /path/to/mlnet[/code:1:37d1aa64b5]
A -l az az ssh-nak a kapcsoloja usernev elott. A - kapcsolot is csak regi a szkriptek visszafele kompatibilitasa miatt hagytak meg.

Nincs igazad. su(1) nak vannak kapcsoli.
http://www.die.net/doc/linux/man/man1/su.1.html
http://www.openbsd.org/cgi-bin/man.cgi?query=su&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html

Utananezes Elotte RC1
[code:1:37d1aa64b5]
# man su

...

NAME
su - change user ID or become super-user

SYNOPSIS
su [-] [username [args]]

DESCRIPTION
su is used to become another user during a login session. Invoked with-
out a username, su defaults to becoming the super user. The optional
argument - may be used to provide an environment similiar to what the
user would expect had the user logged in directly.
...

[/code:1:37d1aa64b5]
Utananezes elote RC2

[code:1:37d1aa64b5]tony@laptop ~ $ su -l root
Password: <helyes_jelszo>
/bin/bash: root: No such file or directory[/code:1:37d1aa64b5]

[quote:37d1aa64b5="thuglife"]Mielott akarmit is irsz eloszor nezz korul. Addig folosleges okoskodni.

Hasznos gondolat. Mielott bunkozol valakivel, gyozodj meg rola, hogy joggal teszed-e. Ha nem all mododba meggyozodni, akkor pedig ne tegy olyan kijelenteseket amelyeket te magad sem olvasnal szivesen hasonlo helyzetben.

A maganvelemenyem pedig, ha valakinek van szakma nivoja azt pont ilyen lekezelo magatartassal lehet legjobban leplezni. Legy olyan, amilyennek latni szeretned a korulotted levoket. :evil:

[quote:168fa81e63="petya"][quote:168fa81e63="rigidus"][quote:168fa81e63="thuglife"]Szerintem erre folosleges sudo(8) -t hasznalni. Erre boven eleg su(1) is,
mivel init kozben mindenkeppen rootken fut minden.
Valami ilyesmivel:

# su -l username /path/to/mlnet

Ez igy nem lenne jo. A su-nak nincsenek kapcsoloi.
Igy helyesen:
[code:1:168fa81e63]# su username /path/to/mlnet[/code:1:168fa81e63]
vagy az ezzel ekvivalens valtozat:
[code:1:168fa81e63]# su - username /path/to/mlnet[/code:1:168fa81e63]
A -l az az ssh-nak a kapcsoloja usernev elott. A - kapcsolot is csak regi a szkriptek visszafele kompatibilitasa miatt hagytak meg.

AFAIK a - os es a nem - os valtozat kozott az a kulombseg, hogy - al login shellt kapsz nem - al pedig nem.

Valtozat 1
[code:1:168fa81e63]root@laptop ~ # su - tony
tony@laptop ~ $
[/code:1:168fa81e63]

Valtozat 2
[code:1:168fa81e63]root@laptop ~ # su tony
tony@laptop ~ $
[/code:1:168fa81e63]

Köszönöm a tippeket, este kipróbálom.

Dii

Jó nyom volt a 'su', csak hogy itt legyen a teljes megoldás, annak akinek hasonló problémája van:

'su - felhasználónév -c parancs &'
(nálam: su - p2p -c /home/p2p/mlnet/mlnet &)

A - kellett ahhoz, hogy a parancs a felhasználó környezetében hajtódjon végre (különben hozzáférési hibák voltak), a -c meg ahhoz hogy parancsvégrehajtás legyen (egyékbént cannot execute binary file hibaüzenet van), az & meg hogy háttérbe menjen és ne álljon meg a gép.
Már csak egy problémám van az egésszel, hogy az 'mlnet' úgy fut le, hogy abba a könyvtárba rakja a fájlait, ahonnan indítják. Ez most a fenti parancsal, a home könyvtára a felhasználónak, míg nekem a ~/mlnet könyvtár lenne ideális, mert akkor nem szemeteli tele a home-ot.
Van valakinek erre megoldása?

A parancsodat atirva valami ilyesmivel probalkoznek (nem igerem, hogy hibatlan, csak a logikaja erdekes):

su - felhasznalonev -c "cd /home/p2p/mlnet && ./mlnet" &

(
ugy probaltam, ki azert valamennyire, hogy rootkent beirtam:
su - root -c "cd /home && touch x" &

Elvileg ugye a /home-ba a root irhat csak, es ment rendesen, valamit vissza is kaptam a shellt.
)

Udv,
Hijaszu

PS: Masik megoldas az lehet, hogy irsz egy shell wrapper, ami automatikus belep a megfelelo konyvtarba es elinditja a programot.

igen

p2p.sh
[code:1:af987aba8b]
cd ~p2p/mlnet
su - p2p -c /home/p2p/mlnet/mlnet &
[/code:1:af987aba8b]

/etc/init.d/ -be bemasolod, majd symlink (S99p2p.sh) a megfelelo rc konyvtarba.

amugy a su es a su - kozott az a gyakorlati kulonbseg, hogy a - eseten megkapja a kornyezeti valtozokat is a user (mint egy uj loginnal), mig a masik esetben nem

Lehet ezt sokkal egyszerubben is.
A system crontabba be lehet irni usert, akinek a neveben inditson, idozitesnek meg be lehet irni, hogy @reboot.

http://www.koch-schmidt.de/cronnix/docs/crontab_syntax.html

Köszönöm a gyors válaszokat!

Ez is, az is jó megoldásnak tűnik, este majd megcsinálom... kicsit még csiszolni kell a bash tudásomat azthiszem :)

Nalam speciel az mlnet ugy indul, hogy egy mldrun nevu script fut le, ami atvalt a konyvtarra, elinditja a daemont es utana a guit. Amikor a guit kinyomom, a script leallitja a daemont is. Igaz, igy nem inditaskor fut, csak ha en elinditom. De nekem igy felel meg.
Szoval sztem talan scripttel kellene, vagy ket su paranccsal vagy nem tudom :( pl. a ; (pontosvesszo) alkalmas arra, hogy egy sorba ket parancsot irj. De nem tudom, a scriptekre mukodik-e a su.
(sudo igen, anyam gepen ezert nem kell rootnak lennie, hogy betarcsazhasson) Nem tudom, de attol felek, a su "elfelejti" az addigi beallitasokat, tehat ha lefut egy su, ami atall a konyvtarra, aztan megegy, ami inditja a demont, a masodik nem veszi figyelembe az elsot. De ki kellene probalni..

[quote:8b896a247f="dii"]
Már csak egy problémám van az egésszel, hogy az 'mlnet' úgy fut le, hogy abba a könyvtárba rakja a fájlait, ahonnan indítják. Ez most a fenti parancsal, a home könyvtára a felhasználónak, míg nekem a ~/mlnet könyvtár lenne ideális, mert akkor nem szemeteli tele a home-ot.
Van valakinek erre megoldása?

[quote:feed575110="rigidus"][quote:feed575110="thuglife"][quote:feed575110="rigidus"][quote:feed575110="thuglife"]Szerintem erre folosleges sudo(8) -t hasznalni. Erre boven eleg su(1) is,
mivel init kozben mindenkeppen rootken fut minden.
Valami ilyesmivel:

# su -l username /path/to/mlnet

Ez igy nem lenne jo. A su-nak nincsenek kapcsoloi.
Igy helyesen:
[code:1:feed575110]# su username /path/to/mlnet[/code:1:feed575110]
vagy az ezzel ekvivalens valtozat:
[code:1:feed575110]# su - username /path/to/mlnet[/code:1:feed575110]
A -l az az ssh-nak a kapcsoloja usernev elott. A - kapcsolot is csak regi a szkriptek visszafele kompatibilitasa miatt hagytak meg.

Nincs igazad. su(1) nak vannak kapcsoli.
http://www.die.net/doc/linux/man/man1/su.1.html
http://www.openbsd.org/cgi-bin/man.cgi?query=su&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html

Utananezes Elotte RC1
[code:1:feed575110]
# man su

...

NAME
su - change user ID or become super-user

SYNOPSIS
su [-] [username [args]]

DESCRIPTION
su is used to become another user during a login session. Invoked with-
out a username, su defaults to becoming the super user. The optional
argument - may be used to provide an environment similiar to what the
user would expect had the user logged in directly.
...

[/code:1:feed575110]
Utananezes elote RC2

[code:1:feed575110]tony@laptop ~ $ su -l root
Password: <helyes_jelszo>
/bin/bash: root: No such file or directory[/code:1:feed575110]

[quote:feed575110="thuglife"]Mielott akarmit is irsz eloszor nezz korul. Addig folosleges okoskodni.

Hasznos gondolat. Mielott bunkozol valakivel, gyozodj meg rola, hogy joggal teszed-e. Ha nem all mododba meggyozodni, akkor pedig ne tegy olyan kijelenteseket amelyeket te magad sem olvasnal szivesen hasonlo helyzetben.

A maganvelemenyem pedig, ha valakinek van szakma nivoja azt pont ilyen lekezelo magatartassal lehet legjobban leplezni. Legy olyan, amilyennek latni szeretned a korulotted levoket. :evil:

Mindkettőtöknek igaza van.
Thuglife az OpenBSD-s su-ról beszél, te meg a Linux disztribúciód shadow csomagjának a su-járól. Csak neki az a szokása, hogy Linuxos fórumokban OpenBSD-re optimalizált tanácsokat osztogat. Nála jobban nem csinálja senki. Legutóbb egy remek Debian fórumban találkoztam vele. Jót diskuráltunk.

Thuglife: mész a sörözésre?

Üdv,
Dw.

[quote:cf1d291e66="petya"][quote:cf1d291e66="rigidus"][quote:cf1d291e66="thuglife"]Szerintem erre folosleges sudo(8) -t hasznalni. Erre boven eleg su(1) is,
mivel init kozben mindenkeppen rootken fut minden.
Valami ilyesmivel:

# su -l username /path/to/mlnet

Ez igy nem lenne jo. A su-nak nincsenek kapcsoloi.
Igy helyesen:
[code:1:cf1d291e66]# su username /path/to/mlnet[/code:1:cf1d291e66]
vagy az ezzel ekvivalens valtozat:
[code:1:cf1d291e66]# su - username /path/to/mlnet[/code:1:cf1d291e66]
A -l az az ssh-nak a kapcsoloja usernev elott. A - kapcsolot is csak regi a szkriptek visszafele kompatibilitasa miatt hagytak meg.

AFAIK a - os es a nem - os valtozat kozott az a kulombseg, hogy - al login shellt kapsz nem - al pedig nem.

A "-"-os és a "-" nélküli változat között az a különbség, hogy az előbbi a környezeti változókat átállítja a kérdéses user-nek megfelelően. Az utóbbinál maradnak az eredeti felhasználó beállításai. "-"-szal olyan, mintha bejelentkeztél volna. Ha új shell-t nyitsz pl., akkor a user home-jába kerülsz. Ha nélküle nyitod, akkor maradsz a pwd-ben.

Üdv,
Dw.