Π½ΠΎΠ²ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠΎΡ Π°Π»Π°ΡΠΊΠΈ , Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ Π΄Π° ΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΡΡΠ΅Π΄ΠΈΠ½ΠΈ Π²ΠΎ Linux ΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ. ΠΠΎ ΠΏΡΠ°ΠΊΡΠ°, Bubblewrap ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Flatpak ΠΊΠ°ΠΊΠΎ ΡΠ»ΠΎΡ Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π°Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π»Π°Π½ΡΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅. ΠΠΎΠ΄ΠΎΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ C ΠΈ Π»ΠΈΡΠ΅Π½ΡΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄ LGPLv2+.
ΠΠ° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΠ°, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° Π²ΠΈΡΡΡΠ΅Π»ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ Π½Π° Linux, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° cgroups, ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡΠΈ, Seccomp ΠΈ SELinux. ΠΠ° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠ°Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ, Bubblewrap ΡΠ΅ ΡΡΠ°ΡΡΡΠ²Π° ΡΠΎ ΠΏΡΠ°Π²Π° Π½Π° root (ΠΈΠ·Π²ΡΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠΎ Π·Π½Π°ΠΌΠ΅Π½ΡΠ΅ suid) ΠΈ ΠΏΠΎΡΠΎΠ° Π³ΠΈ ΡΠ΅ΡΠ΅ΡΠΈΡΠ° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈΡΠ΅ ΠΎΡΠΊΠ°ΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ ΡΠ΅ ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°.
ΠΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡΠΈ Π²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ, ΡΡΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ, Π½Π΅ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π·Π° ΡΠ°Π±ΠΎΡΠ°, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ (Bubblewrap Π΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ°Π½ ΠΊΠ°ΠΊΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΡΠΎΠΏΡΡΠ²Π΅Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π° ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡΠΈ Π·Π° ΠΈΠΌΠΈΡΠ° - Π·Π° Π΄Π° ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ°Ρ ΡΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΎΠ΄ ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ°, ΠΎΡΠ²Π΅Π½ ΡΠ΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠ΅ΠΆΠΈΠΌΠΈΡΠ΅ CLONE_NEWUSER ΠΈ CLONE_NEWPID). ΠΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½Π° Π·Π°ΡΡΠΈΡΠ°, ΠΈΠ·Π²ΡΡΠ½Π° ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Π°
ΠΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Bubblewrap ΡΠ΅ ΡΡΠ°ΡΡΡΠ²Π°Π°Ρ Π²ΠΎ ΡΠ΅ΠΆΠΈΠΌΠΎΡ PR_SET_NO_NEW_PRIVS, ΠΊΠΎΡ Π·Π°Π±ΡΠ°Π½ΡΠ²Π° Π΄ΠΎΠ±ΠΈΠ²Π°ΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π΅ ΠΏΡΠΈΡΡΡΠ½ΠΎ Π·Π½Π°ΠΌΠ΅ΡΠΎ setuid.
ΠΠ·ΠΎΠ»Π°ΡΠΈΡΠ°ΡΠ° Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΡΠ½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½ΡΠ²Π° ΡΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ Π½ΠΎΠ² ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ Π·Π° ΠΌΠΎΠ½ΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎ Π΄ΠΈΡΠΎΠ»Ρ, Π²ΠΎ ΠΊΠΎΡ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ° ΠΏΡΠ°Π·Π½Π° root ΠΏΠ°ΡΡΠΈΡΠΈΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ tmpfs. ΠΠΎΠΊΠΎΠ»ΠΊΡ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ, Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈΡΠ΅ FS ΠΏΠ°ΡΡΠΈΡΠΈΠΈ ΡΠ΅ ΠΏΡΠΈΠΊΠ°ΡΠ΅Π½ΠΈ Π½Π° ΠΎΠ²Π°Π° ΠΏΠ°ΡΡΠΈΡΠΈΡΠ° Π²ΠΎ ΡΠ΅ΠΆΠΈΠΌΠΎΡ βmount βbindβ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π° ΡΠ΅ ΡΡΠ°ΡΡΡΠ²Π° ΡΠΎ ΠΎΠΏΡΠΈΡΠ°ΡΠ° βbwrap βro-bind /usr /usrβ, ΠΏΠ°ΡΡΠΈΡΠΈΡΠ°ΡΠ° /usr ΡΠ΅ ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° ΠΎΠ΄ Π³Π»Π°Π²Π½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ Π²ΠΎ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅). ΠΡΠ΅ΠΆΠ½ΠΈΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ Π½Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ Π·Π° Π²ΡΠ°ΡΠ°ΡΠ΅ Π½Π° ΡΠ°ΠΌΠΊΠ°ΡΠ° ΡΠΎ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ½ΠΈΠΎΡ ΡΡΠ΅ΠΊ ΠΏΡΠ΅ΠΊΡ Π·Π½Π°ΠΌΠ΅Π½ΡΠ°ΡΠ° CLONE_NEWNET ΠΈ CLONE_NEWUTS.
ΠΠ»ΡΡΠ½Π° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ ΡΠ»ΠΈΡΠ΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ , ΠΊΠΎΡ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΎΡ Π·Π° Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ setuid, Π΅ ΡΠΎΠ° ΡΡΠΎ Π²ΠΎ Bubblewrap ΡΠ»ΠΎΡΠΎΡ Π·Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ Π³ΠΈ Π²ΠΊΠ»ΡΡΡΠ²Π° ΡΠ°ΠΌΠΎ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π° ΡΠΈΡΠ΅ Π½Π°ΠΏΡΠ΅Π΄Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π³ΡΠ°ΡΠΈΡΠΊΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ° ΡΠΎ ΡΠ°Π±ΠΎΡΠ½Π°ΡΠ° ΠΏΠΎΠ²ΡΡΠΈΠ½Π° ΠΈ ΡΠΈΠ»ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ²ΠΈΡΠΈ Π΄ΠΎ Pulseaudio ΡΠ΅ Π°ΡΡΡΠΎΡΡΠΈΡΠ°Π½ΠΈ Flatpak ΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Π°Ρ ΠΎΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π°Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈΡΠ΅. Firejail, ΠΎΠ΄ Π΄ΡΡΠ³Π° ΡΡΡΠ°Π½Π°, Π³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ° ΡΠΈΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎ Π΅Π΄Π½Π° ΠΈΠ·Π²ΡΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°, ΡΡΠΎ Π³ΠΎ ΠΎΡΠ΅ΠΆΠ½ΡΠ²Π° ΡΠ΅Π²ΠΈΠ·ΠΈΡΠ°ΡΠ° ΠΈ ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠ° Π½Π° .
ΠΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠ»ΠΈΠ²ΠΎ ΠΏΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΏΡΠΈΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡΠΈ ΡΠΎ ΠΈΠΌΠΈΡΠ° ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡΠΈ Π½Π° pid. ΠΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½ΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΡΡΠΎΡΠΈ, Π΄ΠΎΠ΄Π°Π΄Π΅Π½ΠΈ ΡΠ΅ Π·Π½Π°ΠΌΠ΅Π½ΡΠ°ΡΠ° β--usernsβ, β--userns2β ΠΈ β-pidnsβ.
ΠΠ²Π°Π° ΡΡΠ½ΠΊΡΠΈΡΠ° Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ setuid ΡΠ΅ΠΆΠΈΠΌ ΠΈ Π±Π°ΡΠ° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° ΠΏΠΎΡΠ΅Π±Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ, ΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· Π΄Π° ΡΠ΅ Π΄ΠΎΠ±ΠΈΡΠ°Ρ ΠΏΡΠ°Π²Π° Π½Π° root, Π½ΠΎ Π±Π°ΡΠ° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅
ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΌΠ΅ΡΡΠ° ΡΠΎ ΠΈΠΌΠΈΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ (ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΎ Π½Π° Debian ΠΈ RHEL/CentOS) ΠΈ Π½Π΅ ΡΠ° ΠΈΡΠΊΠ»ΡΡΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ°ΡΠ° Π½Π° βΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡΠΈ ΡΠΎ ΠΈΠΌΠΈΡΠ°β. ΠΠΎΠ²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Bubblewrap 0.4, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ ΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° musl C Π½Π°ΠΌΠ΅ΡΡΠΎ glibc ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π·Π°ΡΡΠ²ΡΠ²Π°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΠΈΠΌΠ΅Π½ΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΡΠΎΡ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π²ΠΎ JSON ΡΠΎΡΠΌΠ°Ρ.
ΠΠ·Π²ΠΎΡ: opennet.ru
