Aktív témák
-
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. :) -
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] -
WN31RD
addikt
-
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? -
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?
FC -
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,
FC
Aktív témák
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Game Pass Ultimate előfizetések 1 - 36 hónapig azonnali kézbesítéssel a LEGOLCSÓBBAN! AKCIÓ!
- The Elder Scrolls Online Imperial Collector s Edition
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- HIBÁTLAN iPhone 11 64GB Red -1 ÉV GARANCIA - Kártyafüggetlen, MS4388
- Nvidia Quadro FX570
- Telefon felvásárlás!! iPhone X/iPhone Xs/iPhone XR/iPhone Xs Max
- Asus ROG 17 WQHD 240Hz G-Sync Ryzen9 7945HX 32GB 1TB SSD Nvidia RTX 4090 16GB 175W Win11 Garancia
- HP Pavilion Plus 14-ey0155ng Ryzen 5-7540 / 16GB / 512GB FHD+ Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
