Aktív témák
-
FastCatch
csendes tag
Sziasztok!
Az a kérdésem, hogy hogyan lenne legcélszerübb elérni, hogy egy userx nevű user tudja _írni_ a /dev/port-ot. nem t'om mi az általános, ezért leírom:
[CODE]
drwxr-xr-x root root /dev
crw-rw---- root kmem /dev/port
[/CODE]
nekem az kell, hogy a userx tudja írni/olvasni a /dev/port-ot, a root értelemszerűen maradjon meg jogaiban, de a többi usernek nem akarnék feleslegesen jogokat osztogatni (úgy olyan eccerű lenne, hogy nem kérdeznék :P).
Előre is kösz,
FCMiért van, hogy a vezetõknek nagy az ellenállásuk?
-
WN31RD
addikt
Csinálj egy új csoportot, pl. dev-port, változtasd meg a /dev/port csoportját az új csoportra, és vedd fel a csoport tagjai közé a kérdéses júzert.
''... we as consumers want our content free (as in Freedom) and if we don't get it, we'll take our content free (as in beer).''
-
FastCatch
csendes tag
Azzal kezdtem, hogy kísérletképpen hozzátettem a usert a kmem csoporthoz, de ez nem látszik elégnek. Szerint az is baj, hogy a /dev-et a root-on kívül mindenki csak olvashatja -- vagy ez hülyeség? Akkor csináljam azt, hogy felveszek ahhoz (is) egy új csoportot és beleteszem a root-ot, meg a usert?
FCMiért van, hogy a vezetõknek nagy az ellenállásuk?
-
WN31RD
addikt
Ha a /dev-be bele tud menni a júzer, és listázni tudja a tartalmát, márpedig tudja (r-x jogok), az elég. Onnantól kezdve már az egyes file-okhoz (pl. /dev/port) rendelt jogok számítanak.
Elvileg elég, ha a júzer tagja egy olyan csoportnak, amelyik írni tud a device-ba. Nem tudom, mi kellene még, de biztos nem a /dev jogaival van baj.
A csoporthoz való hozzáadás után csináltál egy ki-be jelentkezést a júzerrel?''... we as consumers want our content free (as in Freedom) and if we don't get it, we'll take our content free (as in beer).''
-
WN31RD
addikt
Teljesen biztos, hogy a /dev/port-ot használja az a program, és csak azt? Nem lehet, hogy valami más (is) kell neki? A portokat másképp is el lehet érni, pl. az ioperm(), stb. módszerrel, és ahhoz bizony kell a root jog (legalábbis indításkor).
[Szerkesztve]''... we as consumers want our content free (as in Freedom) and if we don't get it, we'll take our content free (as in beer).''
-
FastCatch
csendes tag
A kódrészlet, amin a hiba keletkezik:
bool OpenIOChannel()
{
Ports = open (''/dev/port'', O_RDWR | O_NDELAY );
return ( Ports > 0 );
}
Egy debugger-rel megnézve, az open -1-re állítja a Ports-ot, ha nem root
vagyok és az errno 1.
???
Vicces módon különben a kmem group-nak az egyetlen tagja az a user,akit
felvettem, a root nincs benne...
Sőt, ha a /dev/port-ra mindenkinek rw jogot adok (chmod a+rw /dev/port), akkor
_sem_ fut le a kód. Na ezt már végképp nem értem.
***
SZERK: a kód beillesztése nem sikerült...
[Szerkesztve]Miért van, hogy a vezetõknek nagy az ellenállásuk?
-
WN31RD
addikt
Kipróbáltam, és tényleg nem megy... :((( :F
Nyomoztam kicsit a kernel forrásban (2.6-os) a probléma után, és úgy tűnik, a ''kernel capabilities'' funkció okozza a gondot. Ugyanis nem csak az ioperm()-hez, hanem a /dev/port megnyitásához is szükséges a CAP_SYS_RAWIO, ld.: kernel forrás drivers/char/mem.c, open_port().
Ha a default capabilites nincsen aktiválva (capability kernel modul), akkor a root processzeknek megvan minden capability, a többinek pedig semmi, és ezen nem lehet változtatni, ld. kernel forrás security/dummy.c, dummy_capable().
Megoldási javaslatok (nem próbáltam ki):
a. root-ként induljon a processz, aztán dobálja el a privilégiumait, amint megnyitotta a /dev/port-ot
b. root-ként induljon egy kisegítő processz, ami mondjuk egy socket-en keresztül átad egy file descriptor-t a /dev/port-ra
c. kapcsold be a linux capabilites-t, és - pl. a PAM segítségével - add meg a CAP_SYS_RAWIO-t a kérdéses júzernek
d. piszkálj bele a kernelbe valamelyik helyen, amit említettem
Érdekelne a kipróbált, működő megoldás, ha majd meglesz. :)''... we as consumers want our content free (as in Freedom) and if we don't get it, we'll take our content free (as in beer).''
Aktív témák
- Eredeti Windows, telepítéssel! Digital Doctor Számítógép Szerviz
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! LEGOLCSÓBB! Automatikus 0-24
- Windows 10/11 Home/Pro , Office OEM/Retail kulcsok
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- AKCIÓ! - STEAM kulcsok /Anuchard, Aragami, Children of Morta, stb. - 2024.04.17.