El tudná magyarázni valaki érthetően, röviden, hogy a snap alá telepített programok esetén mi is az a sandbox? Mit korlátoz? Mire való?
Próbáltam utánanézni, de szokás szerint vagy rossz helyen keresek vagy átsiklok lényeges részletek felett, de nem találtam olyan irományt, amit végig tudok olvasni és meg is értem.
Az előzmény: valamikor telepítettem a pycharm nevű IDE-t a gépemre snap-pel. Csak --classic kapcsolóval engedte telepíteni, ami a help szerint kikapcsolja a biztonsági korlátokat. O.K., ezt megértem, hiszen egy IDE nem árt, ha hozzáfér legalább az őt futtató user $HOME-jához. Amit nem értek: ma felraktam a chromium böngészőt ugyanígy, majd elindítottam: snap run chromium. Az így elindított böngésző látszólag hozzáfért a teljes fájlrendszerhez. És innen kezdve nem értem. Akkor mire jó a snap sandbox? Vagy a chromium ilyen beállításokkal települ? De akkor a pycharm miért követelte a --classic-ot? Miért nem tudták azt is ugyanígy beállítani?
Nem az érdekel, hogyan korlátozzam a chromiumot/pycharm-t! Általánosságban érdekelne, mire való a snap sandboxa.
- 1081 megtekintés
Hozzászólások
Közben azt hiszem, megtaláltam: https://forum.snapcraft.io/t/security-policy-and-sandboxing/554
Szerk: vagy mégsem...
Szerk2: egyre kevésbé értem az eddig olvasottakat. A snap úgy volt reklámozva egyes helyeken, mintha valami hűdeforradalmian új dolog lenne ami benne van. Ehhez képest most úgy tűnik, hogy ez a sandbox valójában egy apparmor/SELinux/stb. profilokkal korlátozott környezet.
- A hozzászóláshoz be kell jelentkezni
Pedig a linken mindent elmondanak rola.
A nagy otletuk, hogy ne kelljen neked apparmor profilokkal szarakodnod, hanem valassz ki azokat a plug-okat amiket akarsz es kesz, aztan majd ezek alapjan az alkalmazasnak automatikusan legeneralodnak az apparmor rule-jai. Valahogy ugy szerettek volna megcsinalni, mint ahogy a mobiltelefonodon megkerdezi az android "es akkor akarod, hogy ez hozzaferjen a kamerahoz?" - te meg ha engeded, akkor a hatterben megtortennek azok a valtozasok, hogy az app elerje a kamerat.
Itt vannak az interfeszek: https://github.com/snapcore/snapd/wiki/Interfaces (a fenti linekeden megtalalhato link)
Az meg, hogy a pycharm fejlesztoi mit csinalnak, az o dolguk. Ha nem adjak a "home" interfeszt hat nem adjak.
- A hozzászóláshoz be kell jelentkezni
Az interface-eket néztem, csak nem volt elég egyértelmű számomra, hogy ha ez valóban így megy, hogy ők a snap saját szabályrendszerei amiket a használatban lévő MAC rendszer szabályaira tud konvertálni, akkor miért kell ezzal a --classic kapcsolóval szívni időnként. Az olvasottak alapján egy ilyen interface-t egy alkalmazáshoz párosítani egy mozdulat, miért nem kötelező?
Vagy valamit nagyon félreértek.
- A hozzászóláshoz be kell jelentkezni
Mert megcsinálni magát a programot, hogy ne akarjon kimászni a sandboxból nem egy mozdulat. Kb egyenértékű azzal, amikor a mindenféle okos vendorok csoda (drága) cuccára rá van írva, hogy supported on redhat, aztán azzal kezd az install guide, hogy kapcsold a selinuxot permisszívre.
User szempontból jó indikátor, hogy akarod-e azt a snapet használni :)
- A hozzászóláshoz be kell jelentkezni
Úgy értem, megoldható hogy kiengedjék az ilyen programokat a sandbox-ból, talán van is rá interface (classic-interface).
Jó, így rám van bízva, hogy akarom-e az ilyet felengedni snap-ként.
- A hozzászóláshoz be kell jelentkezni
Erre gondolsz?
"classic-support
Allows resources necessary for running as classic dimension snap which gives device ownership to the snap. This interface is reserved for the classic snap (2.23)."
Ja, van, gondolom ezt kapcsolja a --classic :)
- A hozzászóláshoz be kell jelentkezni
Nem, a --classic nem ezt kapcsolja, mert akkor látszana snap interfaces kimenetében.
- A hozzászóláshoz be kell jelentkezni
kivéve, ha onnan pl ki van véve, mert az egy speciális cucc, ami kapott saját kapcsolót?
- A hozzászóláshoz be kell jelentkezni
Hát elég furcsa logika lenne, de lehetséges.
- A hozzászóláshoz be kell jelentkezni
Jól érted, ez "csak" annyi hogy értelmesen használja ezeket az interfaceket, és ezért jól el tudja szeparálni egymástól az appokat. Az érték elvileg az benne, hogy ezt könnyen megoldhatóvá teszi. Ami, ha próbáltál már kiigazodni mondjuk a redhat által szállított targeted selinux policyk többszázezer rulejával, nem is olyan kis dolog. Miért kéne a base technológiát újra kitalálni?
Ilyen alapon a docker se csinál semmit pl, az is csak namespaceket, cgroupsokat, meg ilyeneket toszogat, meg iptablessel routeol.
Meg persze még ezt azt csinál, de ezt-azt még csinál a snap is (pl atomi, jól rollbackelhető upateket)
- A hozzászóláshoz be kell jelentkezni
Nem kellene újat kitalálni, csak a "marketing"-ből valahogy ez jött le nekem.
- A hozzászóláshoz be kell jelentkezni