Π‘Π»Π΅Π΄ ΡΠ΅ΡΡΠΌΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ ΡΠ΅Π»ΠΈz Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° , Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΊΠΎΡΡΠΎ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π³ΡΠ°ΡΠΈΡΠ½ΠΈ, ΠΊΠΎΠ½Π·ΠΎΠ»Π½ΠΈ ΠΈ ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Firejail ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΠΊΠ° ΠΎΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅Π΄ΠΎΠ²Π΅ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΡΡΠ·Π²ΠΈΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ. ΠΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° C, ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· GPLv2 ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π² Π²ΡΡΠΊΠΎ Linux Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡ Ρ ΡΠ΄ΡΠΎ ΠΏΠΎ-ΡΡΠ°ΡΡ 3.0. ΠΠΎΡΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ Ρ Firejail Π² ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ deb (Debian, Ubuntu) ΠΈ rpm (CentOS, Fedora).
ΠΠ° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π² Firejail ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½Π° (namespaces), AppArmor ΠΈ ΡΠΈΠ»ΡΡΠ°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ (seccomp-bpf) Π² Linux. Π‘Π»Π΅Π΄ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΠΈ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΉΠ½ΠΈ Π΄ΡΡΠ΅ΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½ΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ, ΠΊΠ°ΡΠΎ ΠΌΡΠ΅ΠΆΠΎΠ² ΡΡΠ΅ΠΊ, ΡΠ°Π±Π»ΠΈΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅. ΠΠ·Π°ΠΈΠΌΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΡ Π² Π΅Π΄ΠΈΠ½ ΠΎΠ±Ρ sandbox. ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Firejail ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Docker, LXC ΠΈ OpenVZ.
Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΡΠ° Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ, Firejail Π΅ ΠΊΡΠ°ΠΉΠ½ΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΠΈ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΡΠ½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ ΠΎΠ±ΡΠ°Π· β ΡΡΡΡΠ°Π²ΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ° Π½Π° Π»Π΅ΡΠΎ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΡΠ΅ ΠΈΠ·ΡΡΠΈΠ²Π° ΡΠ»Π΅Π΄ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΡΠ΅ Π³ΡΠ²ΠΊΠ°Π²ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Π΄ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ ΠΈΠ»ΠΈ Π·Π°Π±ΡΠ°Π½Π΅Π½ Π΄ΠΎΡΡΡΠΏ, Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ (tmpfs) Π·Π° Π΄Π°Π½Π½ΠΈ, Π΄Π° ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΡΡ Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠ°ΠΌΠΎ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅, Π΄Π° ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΡΠ΅Π· bind-mount ΠΈ overlayfs.
ΠΠ° Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Firefox, Chromium, VLC ΠΈ Transmission, ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π³ΠΎΡΠΎΠ²ΠΈ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ. ΠΠ° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈΡΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π° ΡΡΠ΅Π΄Π°, ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈΡΡ ΡΠ°ΠΉΠ» firejail ΡΠ΅ Π·Π°Π΄Π°Π²Π° Ρ ΡΠ»Π°Π³Π° SUID root (ΡΠ»Π΅Π΄ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈΡΠ΅ ΡΠ΅ Π½ΡΠ»ΠΈΡΠ°Ρ). ΠΠ° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠΊΠ°ΠΆΠ΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΊΠ°ΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π½Π° ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ° firejail, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«firejail firefoxΒ» ΠΈΠ»ΠΈ Β«sudo firejail /etc/init.d/nginx startΒ».
Π Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:
- Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» /etc/firejail/firejail.config Π½Π°ΡΡΡΠΎΠΉΠΊΠ° file-copy-limit, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° Π΄Π° ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΊΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΡΠΈΠΈ Β«βprivate-*Β» (ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π»ΠΈΠΌΠΈΡΡΡ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° 500MB).
- Π ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° /usr/share/doc/firejail Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈ Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- Π ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ΅ Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ»Π°Π΄ΡΠΈΡΠΈ.
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½a ΡΠΈΠ»ΡΡΠ°ΡΠΈΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° seccomp.
- ΠΡΠΈΠ³ΡΡΠ΅Π½ΠΎ Π°Π²ΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ»Π°Π³ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ°.
- ΠΠΈΠΊΡΡ chroot ΡΠ΅Π³Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π½Π΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΡΡ, Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΎΡΠΊΠΈ Π½Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ.
- ΠΠ°ΡΠ°Π»ΠΎΠ³ΡΡ /usr/share Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² Π±ΡΠ» ΡΠΏΠΈΡΡΠΊ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈ.
- Π ΡΠ΅ΠΊΡΠΈΡ conrib Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π½ΠΎΠ²ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ gdb-firejail.sh ΠΈ sort.py.
- Π£ΠΊΡΠ΅ΠΏΠ΅Π½Π° Π·Π°ΡΠΈΡΠ° Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄ (SUID).
- ΠΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π½ΠΎΠ²ΠΈ ΡΡΠ»ΠΎΠ²Π½ΠΈ ΠΏΡΠΈΠ·Π½Π°ΡΠΈ HAS_X11 ΠΈ HAS_NET Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° X-ΡΡΡΠ²ΡΡ ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ² Π΄ΠΎΡΡΡΠΏ.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈ Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΎΠ±ΡΠΈΡΡ Π±ΡΠΎΠΉ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ΅ Π΄ΠΎΡΡΠΈΠ³Π½Π° 884):
- i2p,
- tor-browser (AUR),
- Zulip,
- rsync,
- signal-cli,
- tcpdump,
- tshark,
- qgis,
- OpenArena,
- godot,
- klatexformula,
- klatexformula_cmdl,
- links,
- xlinks,
- pandoc,
- teams-for-linux,
- gnome-sound-recorder,
- newsbeuter,
- keepassxc-cli,
- keepassxc-proxy,
- rhythmbox-client,
- jerry,
- zeal,
- mpg123,
- conplay,
- mpg123.bin,
- mpg123-alsa,
- mpg123-id3dump,
- out123,
- mpg123-jack,
- mpg123-nas,
- mpg123-openal,
- mpg123-oss,
- mpg123-portaudio,
- mpg123-pulse,
- mpg123-strip,
- pavucontrol-qt,
- gnome-characters,
- gnome-character-map,
- Whalebird,
- tb-starter-wrapper,
- bzcat,
- kiwix-desktop,
- bzcat,
- zstd,
- pzstd,
- zstdcat,
- zstdgrep,
- zstdless,
- zstdmt,
- unzstd,
- ar,
- gnome-latex,
- pngquant,
- kalgebra,
- kalgebramobile,
- amuled,
- kfind,
- profanity,
- audio-recorder,
- cameramonitor,
- ddgtk,
- drawio,
- unf,
- gmpc,
- electron-mail,
- gist,
- gist-paste.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
