ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΡΡΠ΅Π΄ΠΈ Bubblewrap 0.11, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Bubblewrap ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Flatpak ΠΊΠ°ΡΠΎ ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠ° Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½Π° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π² Linux, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° cgroups, ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π½Π° ΠΈΠΌΠ΅Π½Π° (namespaces), Seccomp ΠΈ SELinux. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° C ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ LGPLv2+.
ΠΠ·ΠΎΠ»Π°ΡΠΈΡΡΠ° Π½Π° Π½ΠΈΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΡΠ΅Π· ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° ΠΈΠΌΠ΅ Π·Π° ΡΠΎΡΠΊΠΈ Π½Π° ΠΌΠΎΠ½ΡΠ°ΠΆ (mount namespace), Π² ΠΊΠΎΠ΅ΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° tmpfs ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΠΏΡΠ°Π·Π΅Π½ ΠΊΠΎΡΠ΅Π½ΠΎΠ² Π΄ΡΠ». Π ΡΠΎΠ·ΠΈ Π΄ΡΠ» ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ ΡΠ΅ ΠΏΡΠΈΠΊΡΠ΅ΠΏΡΡ Π΄ΡΠ»ΠΎΠ²Π΅ ΠΎΡ Π²ΡΠ½ΡΠ½Π°ΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π² ΡΠ΅ΠΆΠΈΠΌ "mount βbind" (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Ρ ΠΎΠΏΡΠΈΡ "bwrap βro-bind /usr /usr" Π΄ΡΠ»ΡΡ /usr ΡΠ΅ ΠΏΡΠ΅Ρ Π²ΡΡΠ»Ρ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π² ΡΠ΅ΠΆΠΈΠΌ ΡΠ°ΠΌΠΎ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅). ΠΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Ρ Π΄ΠΎ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ loopback-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Ρ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΡΡΠ΅ΠΊ ΡΡΠ΅Π· ΡΠ»Π°Π³ΠΎΠ²Π΅ΡΠ΅ CLONE_NEWNET ΠΈ CLONE_NEWUTS.
ΠΠ° ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·Π»ΠΈΡΠ½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΎΡ ΡΡΠ·Π΄Π°Π²Π°Π½Π°ΡΠ° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π° ΡΡΠ΅Π΄Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ΅ΠΆΠΈΠΌΠΈΡΠ΅ CLONE_NEWUSER (user namespace) ΠΈ CLONE_NEWPID (PID namespace), Π° Π·Π° Π·Π°Π±ΡΠ°Π½Π° Π½Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΡΠ΅ΠΆΠΈΠΌ PR_SET_NO_NEW_PRIVS. ΠΠ° ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ βuser namespaceβ Bubblewrap ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° ΠΏΠΎΠ΄ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π», Π° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Π±Π΅Π· βuser namespaceβ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ ΡΠ»Π°Π³Π° suid root Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π°ΡΠ° ΡΡΠ΅Π΄Π°.
Π Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΎΡΠΊΠΈ Π½Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠΎΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠΉΠ½Π°ΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° OverlayFS, ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°ΡΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΡΡΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° OverlayFS ΡΠ° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π½ΠΎΠ²ΠΈ ΠΎΠΏΡΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ Β«βoverlayΒ», Β«βtmp-overlayΒ», Β«βro-overlayΒ» ΠΈ Β«βoverlay-srcΒ».
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡ Β«βlevel-prefixΒ» Π·Π° ΠΏΠΎΠ΄ΠΌΡΠ½Π° Π² Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ½ΠΈΡ ΠΈΠ·Ρ ΠΎΠ΄ Π½Π° Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π² ΡΡΠΈΠ» syslog, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠΈΠ»ΠΈΡΠΈ ΠΊΠ°ΡΠΎ Β«loggerΒ» ΠΈ Β«systemd-catΒ» Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π°.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Autotools Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π°. ΠΠ° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΡΠ΅Π³Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΡΡ Meson.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
