FIREJAIL(1) firejail man page FIREJAIL(1) (NAME) Firejail - (Linux namespaces) (SYNOPSIS) : firejail [OPTIONS] [ ] AppImage: firejail [OPTIONS] --appimage [OPTIONS] [ appimage ] : firejail {-- : firejail --me|pid} bandwidth-command : firejail {-- : firejail {-? | --ebug-caps | --ebug-errnos | --ebug-syscalls | --ebug-syscalls32 | --ebug-protocols | -- (DESCRIPTION) Firejail SUID (namespaces) seccomp-bpf (Linux capabilities) . (network stack) (process table) (mount table) . Firejail SELinux AppArmor (Linux Control Groups) . C 3.x . : . Firejail . . Mozilla Firefox Chromium VLC Transmission . Firejail SUID Firejail (root) . firejail ( firejail-users(5) ). Firejail : #4601 . Snap ( ) Flatpak ( ) . Snap Flatpak Firejail . (USAGE) (mount namespace) PID UTS . IPC . Firejail . /etc /var /usr /bin /sbin /lib /lib32 /libx32 /lib64. /home /tmp . Firejail ~/.config/firejail/ /etc/firejail/ . Firejail . . --noprofile . Firejail . : $ firejail [OPTIONS] # $SHELL /bin/bash $ firejail [OPTIONS] /usr/bin/firefox # Mozilla Firefox # sudo firejail [OPTIONS] /etc/init.d/nginx start ( ) (OPTIONS) . --ignore . (OPTIONS) -- . --llow-bwrap firejail /usr/bin/bwrap . bubblewrap firejail . . : $ firejail --0profile --llow-bwrap bwrap -- firejail version 0.9.77 Parent pid 44129, child pid 44130 Base filesystem installed in 0.04 ms Child process initialized in 5.02 ms usage: bwrap [OPTIONS...] [--] COMMAND [ARGS...] --lp --rsion --rgs FD Parse NUL-separated args from FD --llow-debuggers strace gdb ptrace process_vm_readv . 4.8 - ptrace seccomp . : $ firejail --allow-debuggers --profile=/etc/firejail/firefox.profile strace -f /usr/bin/firefox --rivate-etc --race . --llusers /home . . : $ firejail --llusers --pparmor AppArmor "firejail-default". APPARMOR . --pparmor=profile_name AppArmor . . APPARMOR . --pparmor.print=name|pid AppArmor PID. : $ firejail --pparmor.print=browser 5074:netblue:/usr/bin/firejail /usr/bin/firefox-esr AppArmor: firejail-default enforce --ppimage AppImage ( ) . nonewprivs . appimage private-bin private-lib . : $ firejail --ppimage --rofile=krita krita-3.0-x86_64.appimage $ firejail --quiet --ppimage --rivate --rofile=krita krita-3.0-x86_64.appimage $ firejail --ppimage --0t=none --1 --rofile=krita krita-3.0-x86_64.appimage : --ppimage --rofile ?HAS_APPIMAGE ( ?CONDITIONAL firejail-profile(5) ). --me|pid PID TRAFFIC SHAPING . --lename1,filename2 (Mount-bind) filename1 filename2. . : # firejail --g/etc/passwd,/etc/passwd --ist=dirname_or_filename . . . . : . ~/foo /bar /bar . (Globbing) FILE GLOBBING . : $ firejail --ist=/sbin --ist=/usr/sbin $ firejail --ist=~/.mozilla $ firejail --ist="/home/username/My Virtual Machines" -- . . --aps.drop=all --ccomp=!chroot . . : . . CONTRIBUTING.md . : $ firejail --sr/bin/vlc ~/Videos/test.mp4 $ firejail --bsurface.AppImage -- profile-file . --aps.drop=all --ccomp=!chroot . . : . . CONTRIBUTING.md . : $ firejail --sr/bin/vlc ~/Videos/test.mp4 $ firejail --bsurface.profile --ppimage ~/Downloads/Subsurface.AppImage -c . firejail . firejail . --aps (Linux capabilities) . . capabilities(7) . . --aps : CAP_SYS_MODULE, CAP_SYS_RAWIO, CAP_SYS_BOOT, CAP_SYS_NICE, CAP_SYS_TTY_CONFIG, CAP_SYSLOG, CAP_MKNOD, CAP_SYS_ADMIN. . : $ sudo firejail --aps /etc/init.d/nginx start --aps.drop=all . (GUI) . ( ) . : $ firejail --aps.drop=all /usr/bin/warzone2100 --aps.drop=capability,capability,capability . : $ firejail --aps.drop=net_broadcast,net_admin,net_raw --aps.keep=capability,capability,capability . : $ sudo firejail --aps.keep=chown,net_bind_service,setgid,\ setuid /etc/init.d/nginx start --aps.print=name|pid PID. : $ firejail --0me=mygame --aps.drop=all /usr/bin/warzone2100 & $ firejail --aps.print=mygame : $ firejail -- 3272:netblue::firejail --rivate /usr/bin/firefox $ firejail --aps.print=3272 --at=name|pid filename FILE TRANSFER . --hroot=dirname (Chroot) . - . nonewprivs . : $ firejail --hroot=/media/ubuntu /usr/bin/warzone2100 X11 PulseAudio FIREJAIL_CHROOT_X11 FIREJAIL_CHROOT_PULSE . : firejail.config chroot . --pu=cpu-number,cpu-number,cpu-number (CPU affinity). : $ firejail --pu=0,1 /usr/bin/handbrake --pu.print=name|pid PID. : $ firejail --0me=mygame --aps.drop=all /usr/bin/warzone2100 & $ firejail --pu.print=mygame : $ firejail -- 3272:netblue::firejail --rivate /usr/bin/firefox $ firejail --pu.print=3272 --bus-log=file DBus. --dbus-system.log --dbus-user.log . . : $ firejail --bus-system=filter --bus-system.log \ --bus-log=dbus.txt --bus-system=filter|none DBus . filter DBus . xdg-dbus-proxy . --dbus-system.talk --dbus-system.own . none DBus . DBus . ( ) --0t . unix --rotocol . : $ firejail --bus-system=none --bus-system.broadcast=name=[member][@path] (broadcast) DBus . .* . .* * . /* . . : $ firejail --bus-system=filter --bus-system.broadcast=\ org.freedesktop.Notifications=\ org.freedesktop.Notifications.*@/org/freedesktop/Notifications --bus-system.call=name=[member][@path] DBus . .* . .* * . /* . . : $ firejail --bus-system=filter --bus-system.call=\ org.freedesktop.Notifications=\ org.freedesktop.Notifications.*@/org/freedesktop/Notifications --bus-system.log DBus DBus . --dbus-system=filter . : $ firejail --bus-system=filter --bus-system.log --bus-system.own=name DBus . .* ( "foo.bar.*" "foo.bar" "foo.bar.baz" "foo.bar.baz.quux" "foobar"). : $ firejail --bus-system=filter --bus-system.own=\ org.gnome.ghex.* --bus-system.see=name DBus . .* ( "foo.bar.*" "foo.bar" "foo.bar.baz" "foo.bar.baz.quux" "foobar"). : $ firejail --bus-system=filter --bus-system.see=\ org.freedesktop.Notifications --bus-system.talk=name DBus . .* ( "foo.bar.*" "foo.bar" "foo.bar.baz" "foo.bar.baz.quux" "foobar"). : $ firejail --bus-system=filter --bus-system.talk=\ org.freedesktop.Notifications --bus-user=filter|none DBus (session). filter DBus . xdg-dbus-proxy . --dbus-user.talk --dbus- user.own . none DBus . DBus . ( ) --0t . unix --rotocol . : $ firejail --bus-user=none --bus-user.broadcast=name=[member][@path] (broadcast) DBus (session) . .* . .* * . /* . . : $ firejail --bus-user=filter --bus-user.broadcast=\ org.freedesktop.Notifications=\ org.freedesktop.Notifications.*@/org/freedesktop/Notifications --bus-user.call=name=[member][@path] DBus . .* . .* * . /* . . : $ firejail --bus-user=filter --bus-user.call=\ org.freedesktop.Notifications=\ org.freedesktop.Notifications.*@/org/freedesktop/Notifications --bus-user.log DBus DBus . --dbus-user=filter . : $ firejail --bus-user=filter --bus-user.log --bus-user.own=name DBus . .* ( "foo.bar.*" "foo.bar" "foo.bar.baz" "foo.bar.baz.quux" "foobar" ). : $ firejail --bus-user=filter --bus-user.own=org.gnome.ghex.* --bus-user.see=name DBus . .* ( "foo.bar.*" "foo.bar" "foo.bar.baz" "foo.bar.baz.quux" "foobar"). : $ firejail --bus-user=filter --bus-user.see=\ org.freedesktop.Notifications --bus-user.talk=name DBus . .* ( "foo.bar.*" "foo.bar" "foo.bar.baz" "foo.bar.baz.quux" "foobar"). : $ firejail --bus-user=filter --bus-user.talk=\ org.freedesktop.Notifications --ebug (). : $ firejail --ebug /usr/bin/firefox --ebug-blacklists (blacklists). : $ firejail --ebug-blacklists /usr/bin/firefox --ebug-caps Firejail . : $ firejail --ebug-caps --ebug-errnos Firejail . : $ firejail --ebug-errnos --ebug-protocols Firejail . : $ firejail --ebug-protocols --ebug-syscall-groups[=@group1,@group2,@all,...] . seccomp Firejail . @all seccomp . : $ firejail --ebug-syscall-groups $ firejail --ebug-syscall-groups=@chown,@mount,@swap $ firejail --ebug-syscall-groups=@all --ebug-syscalls Firejail . : $ firejail --ebug-syscalls : .tbl src/include firejail . ( ) x86_64 x86 ( ). firejail . .tbl ( ) firejail firejail . .tbl x86_64 x86 v6.19: --ebug-syscalls32 Firejail . --ebug-syscalls . --ebug-whitelists (whitelists). : $ firejail --ebug-whitelists /usr/bin/firefox --efaultgw=address (default gateway) . : $ firejail --0t=eth0 --efaultgw=10.10.20.1 /usr/bin/firefox --eterministic-exit-code firejail . . --eterministic-shutdown . . --isable-mnt /mnt /media /run/mount /run/media . : $ firejail --isable-mnt /usr/bin/firefox --ns=address DNS . DNS . DNS . : $ firejail --ns=8.8.8.8 --ns=8.8.4.4 /usr/bin/firefox : systemd-resolved . --ns.print=name|pid DNS PID. : $ firejail --0me=mygame --aps.drop=all /usr/bin/warzone2100 & $ firejail --ns.print=mygame : $ firejail -- 3272:netblue::firejail --rivate /usr/bin/firefox $ firejail --ns.print=3272 --nstrace[=name|pid] DNS. pid . --0t . . /pid . : $ sudo firejail --nstrace 11:31:43 9.9.9.9 linux.com (type 1) 11:31:45 9.9.9.9 fonts.googleapis.com (type 1) NXDOMAIN 11:31:45 9.9.9.9 js.hs-scripts.com (type 1) NXDOMAIN 11:31:45 9.9.9.9 www.linux.com (type 1) 11:31:45 9.9.9.9 fonts.googleapis.com (type 1) NXDOMAIN 11:31:52 9.9.9.9 js.hs-scripts.com (type 1) NXDOMAIN 11:32:05 9.9.9.9 secure.gravatar.com (type 1) 11:32:06 9.9.9.9 secure.gravatar.com (type 1) 11:32:08 9.9.9.9 taikai.network (type 1) 11:32:08 9.9.9.9 cdn.jsdelivr.net (type 1) 11:32:08 9.9.9.9 taikai.azureedge.net (type 1) 11:32:08 9.9.9.9 www.youtube.com (type 1) --\nv=name=value . : $ firejail --\nv=LD_LIBRARY_PATH=/opt/test/lib --.print=name|pid PID. : $ firejail --0me=mygame --aps.drop=all /usr/bin/warzone2100 & $ firejail --.print=mygame : $ firejail -- 3272:netblue::firejail --rivate /usr/bin/firefox $ firejail --.print=3272 --t=name|pid filename FILE TRANSFER . -?, -- . -- (hostname) . --mize . NAME VALIDATION . : $ firejail --fficepc /usr/bin/firefox --mize firejail. -- : $ firejail --mize /usr/bin/firefox : ( #7048 ) X11 X ( #7062 ). -- file /etc/hosts. : $ firejail --sts /usr/bin/firefox --icmptrace[=name|pid] ICMP. pid . --0t . . /pid . : $ sudo firejail --icmptrace 20:53:54 192.168.1.60 -> 142.250.65.174 - 98 bytes - Echo request/0 20:53:54 142.250.65.174 -> 192.168.1.60 - 98 bytes - Echo reply/0 20:53:55 192.168.1.60 -> 142.250.65.174 - 98 bytes - Echo request/0 20:53:55 142.250.65.174 -> 192.168.1.60 - 98 bytes - Echo reply/0 20:53:55 192.168.1.60 -> 1.1.1.1 - 154 bytes - Destination unreachable/Port unreachable --ignore=command . : $ firejail --ignore=seccomp --ignore=caps /usr/bin/firefox $ firejail --ignore="net eth0" /usr/bin/firefox --include=file.profile . : $ firejail --include=/etc/firejail/disable-devel.inc /usr/bin/gedit --interface=interface . --interface . : wlan . : $ firejail --interface=eth1 --interface=eth0.vlan100 --ip=address IP --0t. . : $ firejail --0t=eth0 --ip=10.10.20.56 /usr/bin/firefox --ip=dhcp IP --0t DNS DHCP. ISC dhclient . : $ firejail --0t=br0 --ip=dhcp DHCP DNS --ns DNS . DHCP DHCP (lease) . DHCP DHCP --0t=none . --ip=none IP --0t . DHCP . : $ firejail --0t=eth0 --ip=none IP . --ip6=address IPv6 --0t. : $ firejail --0t=eth0 --ip6=2001:0db8:0:f101::1/64 /usr/bin/firefox : ip6 SLAAC ( ip6 ). --ip6=dhcp IPv6 --0t DNS DHCP. DHCP ISC dhclient . : $ firejail --0t=br0 --ip6=dhcp --ns DHCP DNS DNS . DHCP DHCP . DHCP DHCP . --iprange=address,address IP --0t. . : $ firejail --0t=eth0 --iprange=192.168.1.100,192.168.1.150 --ipc-namespace IPC . IPC . : IPC ipc_namespaces(7) . IPC ( unix(7)) . : $ firejail --ipc-namespace /usr/bin/firefox --join=name|pid PID. /bin/bash . . --join . --join (cpus) . : $ firejail --0me=mygame --aps.drop=all /usr/bin/warzone2100 & $ firejail --join=mygame : $ firejail -- 3272:netblue::firejail --rivate /usr/bin/firefox $ firejail --join=3272 --join-filesystem=name|pid (mount namespace) PID. /bin/bash . . (root) . (cpus) . --join-network=name|pid . /bin/bash . . . cpus . : # firefox $ firejail --0t=eth0 --0me=browser /usr/bin/firefox & # netfilter $ sudo firejail --join-network=browser bash -c "cat /etc/firejail/nolocal.net | /sbin/iptables-restore" # netfilter $ sudo firejail --join-network=browser /sbin/iptables -vL # IP $ sudo firejail --join-network=browser ip addr Switching to pid 1932, the first child process inside the sandbox 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0-1931: mtu 1500 qdisc noqueue state UNKNOWN group default link/ether 76:58:14:42:78:e4 brd ff:ff:ff:ff:ff:ff inet 192.168.1.158/24 brd 192.168.1.255 scope global eth0-1931 valid_lft forever preferred_lft forever inet6 fe80::7458:14ff:fe42:78e4/64 scope link valid_lft forever preferred_lft forever --join-or-start=name . "firejail --join=name" "firejail --name=name ..." . --0me . join . --ep-config-pulse ~/.config/pulse pulse . : $ firejail --ep-config-pulse /usr/bin/firefox --ep-dev-ntsync /dev/ntsync ( --rivate-dev) . Wine . : $ firejail --ep-dev-ntsync --rivate-dev --ep-dev-shm /dev/shm ( --rivate- dev). : $ firejail --ep-dev-shm --rivate-dev --ep-dev-tpm (TCM) (TPM) ( --rivate-dev) . : /dev/tcm[0-9]* /dev/tcmrm[0-9]* /dev/tpm[0-9]* /dev/tpmrm[0-9]* : $ firejail --ep-dev-tpm --rivate-dev --ep-fd=all . . : $ firejail --ep-fd=all --ep-fd=file_descriptor . . : $ firejail --ep-fd=3,4,5 --ep-shell-rc firejail (/etc/skel) ( ~/.bashrc ~/.zshrc) . . --ep-var-tmp /var/tmp . : $ firejail --ep-var-tmp -- Landlock. Landlock . LANDLOCK . --d=path () Landlock ( ) path. --th () Landlock ( ) path. --keipc=path () Landlock ( ) (FIFOs) . --kedev=path () Landlock ( ) . --th () Landlock ( ) path. : $ firejail --d=/ -- -- -- MONITORING . : $ firejail -- 7015:netblue:browser:firejail /usr/bin/firefox 7056:netblue:torrent:firejail --0t=eth0 /usr/bin/transmission- gtk 7064:netblue::firejail --0root /usr/bin/xterm -- FILE TRANSFER . --c=address MAC --0t. . : $ firejail --0t=eth0 --c=00:11:22:33:44:55 /usr/bin/firefox --chine-id /etc/machine-id - . . . : $ firejail --chine-id --mory-deny-write-execute seccomp . mmap mmap2 mprotect pkey_mprotect memfd_create shmat EPERM ( --ccomp-error-action ). : shmat i386 seccomp-bpf . --dir=dirname . . : $ firejail --dir=~/work/project --file=filename . : $ firejail --file=~/work/project/readme --u=number MTU --0t. : $ firejail --0t=eth0 --u=1492 --0me=name . --join --utdown . --join PID . NAME VALIDATION . Firejail "name-PID" PID . /etc/firejail/firejail.config "name-change" "no" . : $ firejail --0me=browser /usr/bin/firefox & $ firejail --0me=browser --rivate \ /usr/bin/firefox --0-remote & $ firejail -- 1198:netblue:browser:firejail --name=browser /usr/bin/firefox 1312:netblue:browser-1312:firejail --name=browser --private /usr/bin/firefox --no-remote --0t=bridge_interface (bridge). --ip --efaultgw IP . IP ARP . IP . --0t . : $ sudo brctl addbr br0 $ sudo ifconfig br0 10.10.20.1/24 $ sudo brctl addbr br1 $ sudo ifconfig br1 10.10.30.1/24 $ firejail --0t=br0 --0t=br1 --0t=ethernet_interface|wireless_interface macvlan|ipvlan . --ip --efaultgw IP . IP ARP . . --0t . ipvlan 3.19 . : $ firejail --0t=eth0 --ip=192.168.1.80 --ns=8.8.8.8 /usr/bin/firefox $ firejail --0t=wlan0 /usr/bin/firefox --0t=none . (lo) . . : $ firejail --0t=none /usr/bin/vlc : --0t=none . --rotocol=unix . --0t=tap_interface tap macvlan . tap . --ip --0tmask --efaultgw . : $ firejail --0t=tap0 --ip=10.10.20.80 --0tmask=255.255.255.0 --efaultgw=10.10.20.1 /usr/bin/firefox --0t.print=name|pid PID . : $ firejail --0t.print=browser Switching to pid 1853, the first child process inside the sandbox Interface MAC IP Mask Status lo 127.0.0.1 255.0.0.0 UP eth0-1852 5e:fb:8e:27:29:26 192.168.1.186 255.255.255.0 UP --0tfilter . . . : *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -m state --ate RELATED,ESTABLISHED -j ACCEPT # allow ping -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT # drop STUN (WebRTC) requests -A OUTPUT -p udp --port 3478 -j DROP -A OUTPUT -p udp --port 3479 -j DROP -A OUTPUT -p tcp --port 3478 -j DROP -A OUTPUT -p tcp --port 3479 -j DROP COMMIT : $ firejail --0t=eth0 --0tfilter /usr/bin/firefox --0tfilter=filename filename . . iptables-save/iptables-restore . /etc/firejail : webserver.net TCP . : $ firejail --0tfilter=/etc/firejail/webserver.net --0t=eth0 \ /etc/init.d/apache2 start nolocal.net/nolocal6.net . : $ firejail --0tfilter=/etc/firejail/nolocal.net \ --0t=eth0 /usr/bin/firefox --0tfilter=filename,arg1,arg2,arg3 ... (template) . $ARG1, $ARG2, $ARG3 ... arg1, arg2, arg3 ... . . : $ firejail --0t=eth0 --ip=192.168.1.105 \ --0tfilter=/etc/firejail/tcpserver.net,5001 server-program --0tfilter.print=name|pid PID. : $ firejail --0me=browser --0t=eth0 --0tfilter /usr/bin/firefox & $ firejail --0tfilter.print=browser --0tfilter6=filename IPv6 filename . . iptables-save/iptables-restore . --0tfilter6.print=name|pid IPv6 PID. : $ firejail --0me=browser --0t=eth0 --0tfilter /usr/bin/firefox & $ firejail --0tfilter6.print=browser --0tlock ( ...) IP . tor . (guard node) . ... ! (netlock) . IP . (drop). . (--0t=eth0) . : $ firejail --0t=eth0 --0tlock \ --rivate=~/tor-browser_en-US ./start-tor-browser.desktop --0tmask=address IP --net . IP . IP . : $ sudo /sbin/brctl addbr br0 $ sudo /sbin/ifconfig br0 up $ firejail --ip=10.10.20.67 --0tmask=255.255.255.0 --efaultgw=10.10.20.1 --0tns=name . "ip netns" . --0tstats MONITORING . : $ firejail --0tstats PID User RX(KB/s) TX(KB/s) Command 1294 netblue 53.355 1.473 firejail --0t=eth0 /usr/bin/firefox 7383 netblue 9.045 0.112 firejail --0t=eth0 /usr/bin/transmission --0ttrace[=name|pid] TCP UDP ICMP. pid . --0t . . /pid Firejail . : $ sudo firejail --0ttrace 93 KB/s address:port (protocol) network 14 B/s ** 104.24.8.4:443(QUIC) Cloudflare 80 KB/s ***************** 192.187.97.90:443(TLS) BitChute 1 B/s 149.56.228.45:443(DoH) Canada (D)isplay, (S)ave, (C)lear, e(X)it /usr/bin/geoiplookup ( geoip-bin ) . IP /usr/lib/firejail/static-ip-map . IP . --0ce=value nice . . : $ firejail --0ce=2 /usr/bin/firefox --03d (3D). : $ firejail --03d /usr/bin/firefox --0autopulse () --ep-config-pulse . --0blacklist=dirname_or_filename . ${PATH} . ${PATH} . . : #6360 . : $ firejail $ nc dict.org 2628 bash: /bin/nc: Permission denied $ exit $ firejail --0blacklist=/bin/nc bash: /bin/nc: Permission denied $ exit $ firejail --0blacklist='${PATH}/nc' $ nc dict.org 2628 220 pan.alephnull.com dictd 1.12.1/rf on Linux 3.14-1-amd64 --0dbus () D- Bus ( ). --dbus-system=none --dbus- user=none. : $ firejail --0dbus --0t=none --0dvd DVD CD . : $ firejail --0dvd --0exec=dirname_or_filename noexec nodev nosuid. FILE GLOBBING . : $ firejail --0exec=/tmp /etc /var noexec . --0groups (supplementary groups). . . : . --llusers . : $ id uid=1000(netblue) gid=1000(netblue) groups=1000(netblue),24(cdrom),25(floppy),27(sudo),29(audio) $ firejail --0groups Parent pid 8704, child pid 8705 Child process initialized $ id uid=1000(netblue) gid=1000(netblue) groups=1000(netblue) $ --0input . : $ firejail --0input --0newprivs NO_NEW_PRIVS prctl. execve(2) suid ( ) . seccomp . --0printers . --0profile . : $ firejail Reading profile /etc/firejail/default.profile Parent pid 8553, child pid 8554 Child process initialized [...] $ firejail --0profile Parent pid 8553, child pid 8554 Child process initialized [...] --0root - . . 3.8 . --hroot --ppimage . : $ firejail --0root Parent pid 8553, child pid 8554 Child process initialized $ ping google.com ping: icmp open socket: Operation not permitted $ --0sound . : $ firejail --0sound /usr/bin/firefox --0tpm () . TPM --ep-dev-tpm . --0tv DVB ( ). : $ firejail --0tv /usr/bin/vlc --0u2f U2F. : $ firejail --0u2f --0video ( ). --0whitelist=dirname_or_filename . -- (OutOfMemory- killer) . 0 1000 -1000 1000 . OOM man choom . : $ firejail --fx --pt=logfile (stdout) . logfile . .1 .5 . : $ firejail --pt=sandboxlog /bin/bash [...] $ ls -l sandboxlog* -rw-r--r-- 1 netblue netblue 333890 Jun 2 07:48 sandboxlog -rw-r--r-- 1 netblue netblue 511488 Jun 2 07:48 sandboxlog.1 -rw-r--r-- 1 netblue netblue 511488 Jun 2 07:48 sandboxlog.2 -rw-r--r-- 1 netblue netblue 511488 Jun 2 07:48 sandboxlog.3 -rw-r--r-- 1 netblue netblue 511488 Jun 2 07:48 sandboxlog.4 -rw-r--r-- 1 netblue netblue 511488 Jun 2 07:48 sandboxlog.5 --pt-stderr=logfile --pt (stderr) . --rivate /root /home/user . . : $ firejail --rivate /usr/bin/firefox --rivate=directory directory . --rivate --rivate=directory . : $ firejail --rivate=/home/netblue/firefox-home /usr/bin/firefox : firejail ( mkdir mkfile private-cache) . : "ignore mkdir" "ignore mkfile" . : #903 . --rivate-bin=file,file /bin . /bin /sbin /usr/bin /usr/sbin /usr/local/bin . /bin . /sbin /usr/bin /usr/sbin /usr/local/bin bind-mount . . private- bin . FILE GLOBBING . : $ firejail --rivate-bin=bash,cat,ls,sed Parent pid 20841, child pid 20842 Child process initialized $ ls /bin bash cat ls sed --rivate-cache .cache . . : $ firejail --rivate-cache /usr/bin/openbox --rivate-cwd . include . : $ pwd /tmp $ firejail --rivate-cwd $ pwd /home/user --rivate-cwd=directory . . . include . : $ pwd /tmp $ firejail --rivate-cwd=/opt $ pwd /opt --rivate-dev /dev. disc dri dvb full hidraw log null ptmx pts random shm snd tty urandom usb video zero . --03d --0dvd --0sound --0tv --0u2f --0video . : $ firejail --rivate-dev Parent pid 9887, child pid 9888 Child process initialized $ ls /dev cdrom cdrw dri dvd dvdrw full log null ptmx pts random shm snd sr0 tty urandom zero $ --rivate-etc, --rivate-etc=@group,file,directory --rivate-etc /etc . : $ firejail --rivate-etc /usr/bin/dig debian.org X11/GTK/QT/Gnome/KDE @x11 . : $ firejail --rivate-etc=@x11,gcrypt,python* /usr/bin/gimp gcrypt /etc/python* @x11 . (Globbing) . @games : $ firejail --rivate-etc=@games,@x11 /usr/bin/warzone2100 --0sound --0t=none . TLS/SSL @tls-ca : $ firejail --rivate-etc=@tls-ca,wgetrc /usr/bin/wget https://debian.org : /etc strace . : $ strace -f --race=%file /usr/bin/transmission-qt 2>&1 | grep etc $ firejail --llow-debuggers --rofile=/etc/firejail/transmission-qt.profile strace -f --race=%file /usr/bin/transmission-qt 2>&1 | grep etc --llow-debuggers --race . --rivate-home=file,directory . . . : $ firejail --rivate-home=.mozilla /usr/bin/firefox --rivate-opt=file,directory /opt . /opt / ( /opt/foo foo /opt/foo/bar foo/bar ). /opt . . : $ firejail --rivate-opt=firefox /opt/firefox/firefox : /opt private-opt () RAM file-copy-limit firejail.config . "private-opt PATH" "whitelist /opt/PATH" . : #5307 . --rivate-srv=file,directory /srv . /srv / ( /srv/foo foo /srv/foo/bar srv/bar ). /srv . . : # firejail --rivate-srv=www /etc/init.d/apache2 start --rivate-tmp /tmp X11 PulseAudio . : $ firejail --rivate-tmp $ ls -al /tmp drwxrwxrwt 4 nobody nogroup 80 Apr 30 11:46 . drwxr-xr-x 30 nobody nogroup 4096 Apr 26 22:18 .. drwx------ 2 nobody nogroup 4096 Apr 30 10:52 pulse- PKdhtXMmr18n drwxrwxrwt 2 nobody nogroup 4096 Apr 30 10:52 .X11-unix --rofile=filename|appname filename . --rofile Firejail (appname) . ~/.config/firejail /etc/firejail . : $ firejail /usr/bin/firefox Reading profile /home/netblue/.config/firejail/firefox.profile Reading profile /etc/firejail/firefox.profile Reading profile /etc/firejail/firefox-common.profile [...] . $ firejail --rofile=./firefox.profile /usr/bin/firefox Reading profile ./firefox.profile Reading profile /etc/firejail/firefox.profile Reading profile /etc/firejail/firefox-common.profile [...] --rofile=appname appimage : $ firejail --ppimage --rofile=firefox firefox-nightly-148.0.r20260103-x86_64.AppImage Reading profile /home/netblue/.config/firejail/firefox.profile Reading profile /etc/firejail/firefox.profile Reading profile /etc/firejail/firefox-common.profile [...] man 5 firejail-profile . : --rofile.print=name|pid PID. : $ firejail --rofile.print=browser /etc/firejail/firefox.profile --rotocol=protocol,protocol,protocol . seccomp socket . : unix inet inet6 netlink packet bluetooth. i386 . protocol . : $ firejail --rotocol=unix,inet,inet6 /usr/bin/firefox --rotocol.print=name|pid PID. : $ firejail --0me=mybrowser /usr/bin/firefox & $ firejail --rotocol.print=mybrowser unix,inet,inet6,netlink : $ firejail -- 3272:netblue::firejail --rivate /usr/bin/firefox $ firejail --rotocol.print=3272 unix,inet,inet6,netlink --ut=name|pid src-filename dest-filename FILE TRANSFER . --quiet Firejail. FIREJAIL_QUIET yes . --ead-only=dirname_or_filename . FILE GLOBBING . : $ firejail --ead-only=~/.mozilla /usr/bin/firefox --ead-write=dirname_or_filename -. . FILE GLOBBING . : $ mkdir ~/test $ touch ~/test/a $ firejail --ead-only=~/test --ead-write=~/test/a --estrict-namespaces seccomp cgroup ipc net mount pid time user uts . : $ firejail --estrict-namespaces --estrict-namespaces=cgroup,ipc,net,mnt,pid,time,user,uts seccomp . clone unshare setns EPERM ( --ccomp-error-action ). clone3 ENOSYS . : $ firejail --estrict-namespaces=user,net --limit-as=number ( ) . K () M () G () "100M" ( 104857600 ). --limit-cpu=number . . CPU CPU . CPU . CPU . --limit-fsize=number . K () M () G () "100M" ( 104857600 ). --limit-nofile=number . --limit-nproc=number (real user ID) . --limit-sigpending=number . --menv=name . : $ firejail --menv=DBUS_SESSION_BUS_ADDRESS --an ARP . macvlan . : $ firejail --0t=eth0 --an --ccomp seccomp @default-nodebuggers --llow- debuggers @default . seccomp : @aio, @basic-io, @chown, @clock, @cpu- emulation, @debug, @default, @default-nodebuggers, @default- keep, @file-system, @io-event, @ipc, @keyring, @memfd, @memlock, @module, @mount, @network-io, @obsolete, @privileged, @process, @raw-io, @reboot, @resources, @sandbox, @setuid, @swap, @sync, @system-service @timer. /usr/share/doc/firejail/syscalls.txt --ebug-syscall-groups . --ccomp= . /etc/firejail/firejail.config . --ccomp.block-secondary . . I386 AMD64 . audit ( CONFIG_AUDIT) Firejail seccomp audit . : $ firejail --ccomp --ccomp=syscall,@group,!syscall2 seccomp "syscall2" . --ccomp.32 . : $ firejail --ccomp=utime,utimensat,utimes /usr/bin/firefox $ firejail --ccomp=@clock,mkdir,unlinkat /usr/bin/transmission- gtk $ firejail '--ccomp=@ipc,!pipe,!pipe2' audacious "$" "$165" "mount" x86_64 . --ccomp --ebug-syscalls --ccomp.32 --ebug-syscalls32 . EPERM syscall:errno . --ccomp-error-action /etc/firejail/firejail.config . syscall:kill syscall:log . : $ firejail --ccomp=unlinkat:ENOENT,utimensat,utimes Parent pid 10662, child pid 10663 Child process initialized $ touch testfile $ ls testfile testfile $ rm testfile rm: cannot remove `testfile': No such file or directory Firejail (preload) seccomp . seccomp . : $ firejail --0profile --ccomp=execve sh Parent pid 32751, child pid 32752 Post-exec seccomp protector enabled list in: execve, check list: @default-keep prelist: (null), postlist: execve Child process initialized in 46.44 ms $ ls Operation not permitted --ccomp.block-secondary seccomp . amd64 i386 x32 personality(2) . --ccomp.drop=syscall,@group seccomp . --ccomp.32.drop . : $ firejail --ccomp.drop=utime,utimensat,utimes,@clock EPERM syscall:errno . --ccomp-error-action /etc/firejail/firejail.config . syscall:kill syscall:log . : $ firejail --ccomp.drop=unlinkat:ENOENT,utimensat,utimes Parent pid 10662, child pid 10663 Child process initialized $ touch testfile $ ls testfile testfile $ rm testfile rm: cannot remove `testfile': No such file or directory --ccomp.keep=syscall,@group,!syscall2 seccomp "syscall2". Firejail ( @default-keep: prctl, execve, execveat) . --ccomp.32.keep . : $ firejail --ccomp.keep=poll,select,[...] /usr/bin/transmission- gtk --ccomp.print=name|pid seccomp PID. : $ firejail --0me=browser /usr/bin/firefox & $ firejail --ccomp.print=browser line OP JT JF K ================================= 0000: 20 00 00 00000004 ld data.architecture 0001: 15 01 00 c000003e jeq ARCH_64 0003 (false 0002) 0002: 06 00 00 7fff0000 ret ALLOW 0003: 20 00 00 00000000 ld data.syscall-number 0004: 35 01 00 40000000 jge X32_ABI true:0006 (false 0005) 0005: 35 01 00 00000000 jge read 0007 (false 0006) 0006: 06 00 00 00050001 ret ERRNO(1) 0007: 15 41 00 0000009a jeq modify_ldt 0049 (false 0008) 0008: 15 40 00 000000d4 jeq lookup_dcookie 0049 (false 0009) 0009: 15 3f 00 0000012a jeq perf_event_open 0049 (false 000a) 000a: 15 3e 00 00000137 jeq process_vm_writev 0049 (false 000b) 000b: 15 3d 00 0000009c jeq _sysctl 0049 (false 000c) 000c: 15 3c 00 000000b7 jeq afs_syscall 0049 (false 000d) 000d: 15 3b 00 000000ae jeq create_module 0049 (false 000e) 000e: 15 3a 00 000000b1 jeq get_kernel_syms 0049 (false 000f) 000f: 15 39 00 000000b5 jeq getpmsg 0049 (false 0010) 0010: 15 38 00 000000b6 jeq putpmsg 0049 (false 0011) 0011: 15 37 00 000000b2 jeq query_module 0049 (false 0012) 0012: 15 36 00 000000b9 jeq security 0049 (false 0013) 0013: 15 35 00 0000008b jeq sysfs 0049 (false 0014) 0014: 15 34 00 000000b8 jeq tuxcall 0049 (false 0015) 0015: 15 33 00 00000086 jeq uselib 0049 (false 0016) 0016: 15 32 00 00000088 jeq ustat 0049 (false 0017) 0017: 15 31 00 000000ec jeq vserver 0049 (false 0018) 0018: 15 30 00 0000009f jeq adjtimex 0049 (false 0019) 0019: 15 2f 00 00000131 jeq clock_adjtime 0049 (false 001a) 001a: 15 2e 00 000000e3 jeq clock_settime 0049 (false 001b) 001b: 15 2d 00 000000a4 jeq settimeofday 0049 (false 001c) 001c: 15 2c 00 000000b0 jeq delete_module 0049 (false 001d) 001d: 15 2b 00 00000139 jeq finit_module 0049 (false 001e) 001e: 15 2a 00 000000af jeq init_module 0049 (false 001f) 001f: 15 29 00 000000ad jeq ioperm 0049 (false 0020) 0020: 15 28 00 000000ac jeq iopl 0049 (false 0021) 0021: 15 27 00 000000f6 jeq kexec_load 0049 (false 0022) 0022: 15 26 00 00000140 jeq kexec_file_load 0049 (false 0023) 0023: 15 25 00 000000a9 jeq reboot 0049 (false 0024) 0024: 15 24 00 000000a7 jeq swapon 0049 (false 0025) 0025: 15 23 00 000000a8 jeq swapoff 0049 (false 0026) 0026: 15 22 00 000000a3 jeq acct 0049 (false 0027) 0027: 15 21 00 00000141 jeq bpf 0049 (false 0028) 0028: 15 20 00 000000a1 jeq chroot 0049 (false 0029) 0029: 15 1f 00 000000a5 jeq mount 0049 (false 002a) 002a: 15 1e 00 000000b4 jeq nfsservctl 0049 (false 002b) 002b: 15 1d 00 0000009b jeq pivot_root 0049 (false 002c) 002c: 15 1c 00 000000ab jeq setdomainname 0049 (false 002d) 002d: 15 1b 00 000000aa jeq sethostname 0049 (false 002e) 002e: 15 1a 00 000000a6 jeq umount2 0049 (false 002f) 002f: 15 19 00 00000099 jeq vhangup 0049 (false 0030) 0030: 15 18 00 000000ee jeq set_mempolicy 0049 (false 0031) 0031: 15 17 00 00000100 jeq migrate_pages 0049 (false 0032) 0032: 15 16 00 00000117 jeq move_pages 0049 (false 0033) 0033: 15 15 00 000000ed jeq mbind 0049 (false 0034) 0034: 15 14 00 00000130 jeq open_by_handle_at 0049 (false 0035) 0035: 15 13 00 0000012f jeq name_to_handle_at 0049 (false 0036) 0036: 15 12 00 000000fb jeq ioprio_set 0049 (false 0037) 0037: 15 11 00 00000067 jeq syslog 0049 (false 0038) 0038: 15 10 00 0000012c jeq fanotify_init 0049 (false 0039) 0039: 15 0f 00 00000138 jeq kcmp 0049 (false 003a) 003a: 15 0e 00 000000f8 jeq add_key 0049 (false 003b) 003b: 15 0d 00 000000f9 jeq request_key 0049 (false 003c) 003c: 15 0c 00 000000fa jeq keyctl 0049 (false 003d) 003d: 15 0b 00 000000ce jeq io_setup 0049 (false 003e) 003e: 15 0a 00 000000cf jeq io_destroy 0049 (false 003f) 003f: 15 09 00 000000d0 jeq io_getevents 0049 (false 0040) 0040: 15 08 00 000000d1 jeq io_submit 0049 (false 0041) 0041: 15 07 00 000000d2 jeq io_cancel 0049 (false 0042) 0042: 15 06 00 000000d8 jeq remap_file_pages 0049 (false 0043) 0043: 15 05 00 00000116 jeq vmsplice 0049 (false 0044) 0044: 15 04 00 00000087 jeq personality 0049 (false 0045) 0045: 15 03 00 00000143 jeq userfaultfd 0049 (false 0046) 0046: 15 02 00 00000065 jeq ptrace 0049 (false 0047) 0047: 15 01 00 00000136 jeq process_vm_readv 0049 (false 0048) 0048: 06 00 00 7fff0000 ret ALLOW 0049: 06 00 01 00000000 ret KILL $ --ccomp-error-action= kill | ERRNO | log seccomp EPERM . --ccomp-error-action=error ENOSYS EACCES . ( 0.9.63 Firejail) --ccomp-error-action=kill --ccomp-error-action=log . Firejail . --utdown=name|pid PID. : $ firejail --0me=mygame --aps.drop=all /usr/bin/warzone2100 & $ firejail --utdown=mygame : $ firejail -- 3272:netblue::firejail --rivate /usr/bin/firefox $ firejail --utdown=3272 --itrace[=name|pid] (TLS/SNI). pid . --0t . . /pid Firejail . : $ sudo firejail --itrace 07:49:51 23.185.0.3 linux.com 07:49:51 23.185.0.3 www.linux.com 07:50:05 192.0.73.2 secure.gravatar.com 07:52:35 172.67.68.93 www.howtoforge.com 07:52:37 13.225.103.59 sf.ezoiccdn.com 07:52:42 142.250.176.3 www.gstatic.com 07:53:03 173.236.250.32 www.linuxlinks.com 07:53:05 192.0.77.37 c0.wp.com 07:53:08 192.0.78.32 jetpack.wordpress.com 07:53:09 192.0.77.32 s0.wp.com 07:53:09 192.0.77.2 i0.wp.com 07:53:10 192.0.77.2 i0.wp.com 07:53:11 192.0.73.2 1.gravatar.com --ab Tab . $ firejail --rivate --ab --imeout=hh:mm:ss . :: . $ firejail --imeout=01:30:00 /usr/bin/firefox --mpfs=dirname tmpfs dirname. . . FILE GLOBBING . : $ firejail --mpfs=~/.local/share --op MONITORING . : $ firejail --op --race[=filename] open access connect. filename filename . : $ firejail --race /usr/bin/wget -q www.debian.org Reading profile /etc/firejail/wget.profile 3:wget:fopen64 /etc/wgetrc:0x5c8e8ce6c0 3:wget:fopen /etc/hosts:0x5c8e8cfb70 3:wget:socket AF_INET SOCK_DGRAM IPPROTO_IP:3 3:wget:connect 3 8.8.8.8 port 53:0 3:wget:socket AF_INET SOCK_STREAM IPPROTO_IP:3 3:wget:connect 3 130.89.148.14 port 80:0 3:wget:fopen64 index.html:0x5c8e8d1a60 parent is shutting down, bye... --llow-debuggers --rivate-etc . --racelog . syslog . : $ firejail --racelog /usr/bin/firefox : $ sudo tail -f /var/log/syslog [...] Dec 3 11:43:25 debian firejail[70]: blacklist violation - sandbox 26370, exe firefox, syscall open64, path /etc/shadow Dec 3 11:46:17 debian firejail[70]: blacklist violation - sandbox 26370, exe firefox, syscall opendir, path /boot [...] : firejail.config tracelog . --ree MONITORING . : $ firejail --ree 11903:netblue:firejail /usr/bin/iceweasel 11904:netblue:iceweasel 11957:netblue:/usr/lib/iceweasel/plugin-container 11969:netblue:firejail --0t=eth0 /usr/bin/transmission-gtk 11970:netblue:transmission-gtk --nhide-pid1 (Pid 1) Firejail . /proc ps . --nhide-pid1 . : $ firejail --0me=test ### pid 1 [...] Child process initialized in 59.41 ms $ ps a PID TTY STAT TIME COMMAND 4 ? S 0:00 /bin/bash 5 ? R+ 0:00 ps a $ exit Parent is shutting down, bye $ firejail --0me=test --nhide-pid1 ### pid 1 [...] Child process initialized in 58.29 ms $ ps a PID TTY STAT TIME COMMAND 1 ? S 0:00 firejail --0me=test --nhide-pid1 4 ? S 0:00 /bin/bash 6 ? R+ 0:00 ps a $ exit Parent is shutting down, bye -- / . : $ firejail -- firejail version 0.9.27 Compile time support: - AppArmor support is enabled - AppImage support is enabled - chroot support is enabled - file and directory whitelisting support is enabled - file transfer support is enabled - firetunnel support is enabled - networking support is enabled - private-home support is enabled - seccomp-bpf support is enabled - user namespace support is enabled - X11 sandboxing support is enabled --=name --0t=bridge_interface . : $ firejail --0t=br0 --=if0 --648 . (top directory) . firejail /etc/somedir/somefile /etc . /opt /usr . . mount-bind . . / . /proc /sys /sys/module . /run/user/$UID $HOME /usr . : . ~/foo ~/bar ~/bar . : . . (Globbing) FILE GLOBBING . : $ firejail --0profile --432 $ firejail --672 $ firejail --240ome/username/My Virtual Machines" $ firejail --216ome/username/My\ Virtual\ Machines $ firejail --504 --240 /etc -. : $ sudo firejail --240 --168un-user /run/user/$UID/systemd /run/user/$UID/gnupg . : $ sudo firejail --168un-user --216 /var -. : $ sudo firejail --216 --216-log /var/log . tmpfs /var/log /var/log . : $ sudo firejail --216-log --1 Xpra Xephyr Xvfb Xorg. () . Firejail Xephyr Xpra . Firejail Xvfb X11 . Xpra Xephyr Xvfb X11 . "-nolisten local" Xorg . : $ firejail --1 --0t=eth0 /usr/bin/firefox --1=none /tmp/.X11-unix ${HOME}/.Xauthority ${XAUTHORITY} . DISPLAY XAUTHORITY. X11 . --1=xephyr Xephyr . Xephyr X11 . X11 . Xephyr X11 . 800x600 . /etc/firejail/firejail.config . . OpenBox . Xephyr Xorg . sudo apt-get install xserver-xephyr . . : $ firejail --1=xephyr --net=eth0 /usr/bin/openbox --1=xorg X11. Xorg . / . . . X11 . Chromium xterm . Firefox transmission-gtk . . : $ firejail --1=xorg /usr/bin/firefox --1=xpra Xpra ( ) . Xpra X11 . X11 . Xpra sudo apt-get install xpra . . : $ firejail --1=xpra --0t=eth0 /usr/bin/firefox --1=xvfb X11 Xvfb . Xvfb X virtual framebuffer . Xvfb (headless) . Xvfb sudo apt-get install xvfb . . : VNC Xvfb openbox . Xvfb 800x600 /etc/firejail/firejail.config (xvfb-screen) . (--net) X . $ firejail --0t=none --1=xvfb /usr/bin/openbox *** Attaching to Xvfb display 792 *** Reading profile /etc/firejail/openbox.profile Reading profile /etc/firejail/disable-common.inc Reading profile /etc/firejail/disable-common.local Parent pid 5400, child pid 5401 VNC Xvfb (792) . $ x11vnc -display :792 VNC : $ vncviewer --xtra-params=OPTIONS Xephyr --1=xephyr. /etc/firejail/firejail.config . Xephyr -help . : $ firejail --0t=eth0 --1=xephyr --xtra-params="-title firefox" /usr/bin/firefox --en=WIDTHxHEIGHT --1=xephyr. /etc/firejail/firejail.config . xrandr . : $ firejail --0t=eth0 --1=xephyr --en=640x480 /usr/bin/firefox (APPARMOR) AppArmor . --\nable-apparmor : $ ./configure --refix=/usr --\nable-apparmor AppArmor firejail-default /etc/apparmor.d . /etc/apparmor.d/local/firejail-local . apparmor.service : # apparmor_parser -r /etc/apparmor.d/firejail-default firejail : - ptrace. ptrace . . Chromium Firefox . . - /run /proc /sys . - /bin /sbin /usr/bin . . . - . unix inet inet6 netlink raw packet . - .snapshots. AppArmor Firejail --pparmor Firejail . apparmor Firejail . : $ firejail --apparmor /usr/bin/firefox (DESKTOP INTEGRATION) /usr/bin/firejail Firejail . $PATH . /usr/local/bin . : firefox /usr/bin/firejail: $ sudo ln -s /usr/bin/firejail /usr/local/bin/firefox $PATH: $ which -a firefox /usr/local/bin/firefox /usr/bin/firefox firefox "firejail /usr/bin/firefox" . . "firejail --ree" . $ firejail --ree 1189:netblue:firejail /usr/bin/firefox 1190:netblue:firejail /usr/bin/firefox 1220:netblue:/bin/sh -c "/usr/lib/firefox/firefox" 1221:netblue:/usr/lib/firefox/firefox firecfg(1) . (EXAMPLES) firejail . firejail /usr/bin/firefox Mozilla Firefox. firejail --ebug /usr/bin/firefox Firefox. firejail --rivate /usr/bin/firefox Firefox . firejail --0t=none /usr/bin/vlc VLC . firejail --0t=eth0 /usr/bin/firefox Firefox . IP . firejail --0t=br0 --ip=10.10.20.5 --0t=br1 --0t=br2 br0 br1 br2. IP br1 br2 . firejail -- . (FILE GLOBBING) (Globbing) . firejail . firejail . : - '?' - '*' - '[' glob glibc . man 7 glob . : --ist --rivate- bin --0exec --ead-only --ead-write --mpfs --192 : $ firejail --rivate-bin=sh,bash,python* $ firejail --ist=~/dir[1234] $ firejail --ead-only=~/dir[1-4] (FILE TRANSFER) . --at=name|pid filename . PID . ASCII . --t=name|pid filename . PID . -- . PID . --ut=name|pid src-filename dest-filename src-filename . PID . : $ firejail --0me=mybrowser --rivate /usr/bin/firefox $ firejail --er ~/Downloads drwxr-xr-x netblue netblue 4096 . drwxr-xr-x netblue netblue 4096 .. -rw-r--r-- netblue netblue 7847 x11-x305.png -rw-r--r-- netblue netblue 6800 x11-x642.png -rw-r--r-- netblue netblue 34139 xpra-clipboard.png $ firejail --t=mybrowser ~/Downloads/xpra-clipboard.png $ firejail --ut=mybrowser xpra-clipboard.png ~/Downloads/xpra-clipboard.png $ firejail --at=mybrowser ~/.bashrc (LANDLOCK) : Landlock firejail . landlock- common.inc . firejail blacklist read-only read- write . whitelist private-etc ( unveil(2) OpenBSD ). Landlock ( Landlock ). Landlock firejail ( ). Landlock 5.13 . . Landlock . Firejail Landlock . . Firejail (landlock- common.inc ) . : - 1 Landlock ABI . - "lsm=" "landlock" ( "lsm=apparmor,landlock") . - Landlock CAP_SYS_ADMIN "No New Privileges" . Landlock Firejail "No New Privileges" --0newprivs . - /etc . --576 --rivate-etc /etc . Landlock Firejail --il . Landlock . : $ firejail -- /usr/bin/mc Landlock --ignore=landlock.enforce . (MONITORING) -- PID:USER:Sandbox Name:Command --ree . : PID:USER:Sandbox Name:Command --op top . --0tstats . () --op --0tstats : Command . CPU% . PID (PID) . Prcs . RES (KiB) . RES . RX(KB/s) . Sandbox Name . SHR (KiB) . SHR . TX(KB/s) . Uptime ::. USER . (NAME VALIDATION) . : . ASCII "-._" ( ). . ASCII . (RESTRICTED SHELL) /bin/bash /usr/bin/firejail /etc/passwd . /usr/bin/firejail adduser : adduser --ell /usr/bin/firejail username firejail /etc/firejail/login.users . (TRAFFIC SHAPING) . . Firejail tc . . : $ firejail --me|pid set network download upload : $ firejail --me|pid clear network : $ firejail --me|pid status : name - pid - (pid) network - --0t download - KB/s ( ) upload - KB/s ( ) : $ firejail --0me=mybrowser --0t=eth0 /usr/bin/firefox & $ firejail -- $ firejail --tus $ firejail --r eth0 (LICENSE) (GNU General Public License) ( ) / . : (SEE ALSO) firemon(1), firecfg(1), firejail-profile(5), firejail-login(5), firejail-users(5), jailcheck(1) , 0.9.80 Mar 2026 FIREJAIL(1)