 
	Firejail 是一个沙盒程序,它允许程序使用自己的参数集在单独的沙盒中运行,从而限制它们与系统其余部分的接触。Firejail 易于使用,几乎在所有主要发行版的存储库中都可用。

一、安装 Firejail
Debian/Ubuntu
$ sudo apt install firejail
Fedora/CentOS
.rpm从他们的 Sourceforge 页面下载 Firejail https://sourceforge.net/projects/firejail/files/firejail/,然后手动安装。

# rpm -i firejail_X.YZ.x86_64.rpm
OpenSUSE
# zypper install firejail
Gentoo
#emerge --ask firejail
二、基本用法
要通过 Firejail 运行应用程序,您只需要在命令前加上firejail.
firejail firefox
Firefox 会像往常一样启动,但包含在它自己的沙箱中。
这几乎适用于您能想到的任何应用程序,包括命令行应用程序。
$ firejail tar xpf somefile.tar.gz
只要应用程序运行,Firejail 就会一直运行。即使您使用的东西会打开一段时间,您也不必担心 Firejail 停止和您的应用程序不安全。实际上,如果确实发生了类似的事情,应用程序也会停止。
Firejail 配置文件
Firejail 默认的配置文件在/etc/firejail/目录中,如果运行的时候需要自定义配置文件,可以将默认的配置文件复制到新目录,然后自定义配置文件运行firejail。
firejail --profile=/home/netblue/icecat.profile icecat
有几种方法可以让 Firejail 在默认情况下与程序一起运行。最简单的方法可能是修改您计划与 Firejail 一起使用的程序的启动器。
如果您希望 Firejail 与它具有默认配置文件的每个程序一起运行,您可以以 root 身份运行一个简单的命令,Firejail 将自行设置。
#firecfg
如果默认情况下您没有使用 Firejail 的范围广泛的程序,您可以手动设置您想要的程序。
# ln -s /usr/bin/firejail /usr/local/bin/firefox
这会在 firejail 和正在运行的程序之间创建一个符号链接。替换系统和程序的实际路径。
三、firejail 命令参数大全
使用自定义的安全配置文件语法
       firejail --profile=filename.profile 
       firejail --profile=profile_name
描述
       几个命令行选项可以传递给程序使用配置
       文件。Firejail 选择配置文件如下:
       1. 如果配置文件是由用户提供的 --profile 选项,则加载配置文件。如果给出了配置文件名称,则首先在 ~/.config/firejail 目录中搜索它,如果没有找到,则在/etc/firejail 目录。配置文件名称不包括 .profile 后缀
       。
示例:
              $ firejail --profile=/home/netblue/icecat.profile icecat
              读取配置文件 /home/netblue/icecat.profile
              $ firejail --profile=icecat icecat-wrapper.sh
              读取配置文件 /etc/firejail /icecat.profile
       2. 如果
       ~/.config/firejail 目录或 /etc/firejail 中存在与应用程序同名的配置文件,则
       加载该配置文件。~/.config/firejail 优先于 /etc/firejail。应试
       PLE:
              $ firejail式Icecat
              命令名称 #icecat#
              在 /home/netblue/.config/firejail 目录中找到 icecat 配置文件
              读取配置文件 /home/netblue/.config/firejail/icecat.profile 
              [...] 
       3. 如果沙箱使用 default.profile 文件由普通
       用户启动,如果沙箱由 root 启动,则由 server.profile 文件启动。Fire- 
       jail 在 ~/.config/firejail 目录中查找这些文件,然后是
       /etc/firejail 目录。要禁用默认配置文件加载,请使用 --no- 
       profile 命令选项。示例:
              $ firejail
              读取配置文件 /etc/firejail/default.profile
              父 pid 8553,子 pid 8554
              子进程已初始化
              [...] 
              $ firejail --noprofile
              父
              进程pid 8553, 子进程已初始化
              [...]
模板
       在 /usr/share/doc/firejail 中有两个模板用于编写新的配置
       文件。
              profile.template - 用于常规配置文件
              redirect_alias-profile.template - 用于别名/重定向配置
              文件
脚本
       脚本命令:
       文件和目录名称
              支持包含空格的文件和目录名称。这
              不应转义空格字符“ ”。
              示例:"blacklist ~/My Virtual Machines" 
       # 这是注释
       ?CONDITIONAL: profile line
              有条件地添加 profile line。
              示例:“?HAS_APPIMAGE: whitelist ${HOME}/special/appimage/dir”
              只有
              在命令行中指定了--appimage 选项时,此示例才会加载白名单配置文件行。
              目前唯一支持这种方式的条件是 HAS_AP- 
              PIMAGE、HAS_NET、HAS_NODBUS、HAS_NOSOUND 和 HAS_X11。
              可以启用条件BROWSER_DISABLE_U2F 和 BROWSER_ALLOW_DRM
              或在 Firejail 的配置文件中全局禁用。
              配置文件行可以是您通常
              在配置文件中使用的任何配置文件行,“安静”和“包含”行除外。
       包括 other.profile
              包括 other.profile 文件。
              示例:“include /etc/firejail/disable-common.inc”
              文件名可以使用宏作为前缀,例如 ${HOME} 或
              ${CFG}。${HOME} 扩展为用户主目录,${CFG}
              扩展为 Firejail 系统配置目录 - 大多数
              情况下为 /etc/firejail 或 /usr/local/etc/firejail。
              示例:“include ${HOME}/myprofiles/profile1”将加载
              “~/myprofiles/profile1”文件。
              示例:“include ${CFG}/firefox.profile”将加载“/etc/fire- 
              jail/firefox.profile”文件。
              文件名也可能只是没有前导目录
              组件的名称。在这种情况下,首先在用户配置
              目录 (${HOME}/.config/firejail) 中搜索文件名
              ,如果没有找到,则在系统配置目录中
              搜索文件名。注意:与 --profile 选项不同,
              它采用不带“.profile”的配置文件名称
              include 必须给出完整的文件名。
              例如:"include firefox.profile" 将加载 "${HOME}/. 
              config/firejail/firefox.profile" 文件,如果它不存在
              "${CFG}/firefox.profile" 将加载。
              ${CFG} 中的系统配置文件在
              软件安装期间被覆盖。系统级别的持久配置
              在“.local”文件中处理。对于 ${CFG}
              目录中的每个配置文件,用户可以创建一个相应的 .local 文件来存储
              对持久配置的修改。执着的
              .local 文件包含在常规配置文件的开头。
       noblacklist file_name
              如果文件名与 file_name 匹配,则该文件将不会
              在随后的任何黑名单命令中列入黑名单。
              示例:"noblacklist ${HOME}/.mozilla" 
       nowhitelist file_name
              如果文件名与 file_name 匹配,则该文件将不会
              在随后的任何白名单命令中列入白名单。
              示例:“nowhitelist ~/.config”
       忽略忽略命令。
              示例:“忽略 seccomp”
              示例:“忽略网络 eth0”
       quiet 禁用 Firejail 的输出。这应该是
              配置文件中第一个未注释的命令。
              示例:“quiet”
文件系统
       这些配置文件条目定义了一个构建在
       现有主机文件系统之上的 chroot 文件系统。每行描述一个
       无法访问的文件/目录(黑名单)、一个只读文件或目录(只读)、一个
       挂载在现有目录顶部的 tmpfs (tmpfs),或者挂载绑定一个
       目录或文件在顶部另一个目录或文件(绑定)。使用
       private 设置私人模式。支持文件通配,并
       搜索PATH 和HOME 目录,参见 firejail FILE GLOBBING 部分
       更多细节。示例:
       黑名单 file_or_directory
              黑名单目录或文件。示例:
              blacklist /usr/bin 
              blacklist /usr/bin/gcc* 
              blacklist ${PATH}/ifconfig 
              blacklist ${HOME}/.ssh 
       blacklist-nolog file_or_directory
              当 --tracelog 标志被设置时,黑名单生成系统日志消息,
              如果沙箱尝试访问文件或目录。
              blacklist-nolog 命令禁用此
              特定文件或目录的系统日志消息。示例:
              blacklist-nolog /usr/bin
              blacklist-nolog /usr/bin/gcc* 
       bind directory1,directory2 
Mount-bind directory1 在 directory2 之上。此选项仅
              在以 root 身份运行时可用。
       bind file1,file2
              在 file2 的顶部挂载绑定 file1。此选项仅
              在以 root 身份运行时可用。
       disable-mnt
              禁用 /mnt、/media、/run/mount 和 /run/media 访问。
       keep-dev-shm 
/dev/shm 目录未受影响(即使使用 private-dev)。
       keep-var-tmp 
/var/tmp 目录不变。
       mkdir 目录
启动沙箱之前,在用户主目录、/tmp 或/run/user/下创建一个目录。如果目录不存在,则创建该目录。将此命令用于在沙箱关闭时需要保留的白名单目录。没有它,应用程序将创建目录,当沙箱关闭时该目录将被删除。子目录是递归创建的。来自 firefox 配置文件的示例:
              mkdir ~/.mozilla
              whitelist ~/.cache/mozilla/firefox
              对于 /run/user/ 中的文件,使用 ${RUNUSER} 宏:
              mkdir ${RUNUSER}/firejail-testing 
       mkfile file
              与 mkdir 类似,该命令在用户home 中创建一个空文件,或者/tmp,或在沙箱启动之前的 /run/user/ 下。如果文件不存在,则创建该文件。
       noexec file_or_directory
              重新挂载文件或目录 noexec、nodev 和 nosuid。
       overlay
        ...
点击查看剩余70%
 
			 
			 
				 
			 
	
网友评论0