如何在Linux中使用Firejail运行应用程序
有时您可能希望使用在不同环境中未经过良好测试的应用程序,但您必须使用它们。在这种情况下,关注系统的安全性是正常的。在Linux中可以做的一件事是在沙箱中使用应用程序。
“沙盒”是在有限环境中运行应用程序的能力。这样,应用程序就可以提供运行所需的大量资源。由于名为Firejail的应用程序,您可以安全地在Linux中运行不受信任的应用程序。
Firejail是一个SUID(设置所有者用户ID)应用程序,它通过使用Linux命名空间和seccomp-bpf限制不受信任程序的运行环境来减少安全漏洞的暴露。
它使一个进程及其所有后代拥有自己的全局共享内核资源的秘密视图,例如网络堆栈,进程表,挂载表。
Firejail使用的一些功能:
- Linux名称空间
- 文件系统容器
- 安全过滤器
- 网络支持
- 资源分配
有关Firejail功能的详细信息,请参阅官方页面。
如何在Linux中安装Firejail
可以使用git命令从项目的github页面下载最新的软件包来完成安装,如图所示。
linuxidc@linuxidc:~/www.linuxidc.com$ git clone https://github.com/netblue30/firejail.git
正克隆到 'firejail'...
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 38395 (delta 11), reused 11 (delta 5), pack-reused 38372
接收对象中: 100% (38395/38395), 9.82 MiB | 87.00 KiB/s, 完成.
处理 delta 中: 100% (30820/30820), 完成.
linuxidc@linuxidc:~/www.linuxidc.com$ cd firejail
linuxidc@linuxidc:~/www.linuxidc.com/firejail$ ./configure && make && sudo make install-strip
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o

如果您的系统上没有安装git,可以使用以下命令安装它:
$ sudo apt install git [在 Debian/Ubuntu]
# yum install git [在 CentOS/RHEL]
# dnf install git [在 Fedora 22+]
安装firejail的另一种方法是下载与Linux发行版相关联的软件包,并使用其软件包管理器进行安装。 可以从项目的SourceForge页面下载文件。 下载文件后,可以使用以下命令安装:
$ sudo dpkg -i firejail_X.Y_1_amd64.deb [在 Debian/Ubuntu]
$ sudo rpm -i firejail_X.Y-Z.x86_64.rpm [在 CentOS/RHEL/Fedora] 如何在Linux中使用Firejail运行应用程序
您现在可以使用firejail运行应用程序了。 这是通过启动终端并在您希望运行的命令之前添加firejail来实现的。
下面是一个例子:

$ firejail firefox #启动 Firefox网络浏览器
$ firejail vlc # 启动 VLC 播放器 创建安全配置文件
Firejail包含许多针对不同应用程序的安全配置文件,它们存储在:
/etc/firejail
如果您从源代码构建项目,则可以在以下位置找到配置文件:
# path-to-firejail/etc/
如果您使用了rpm/deb软件包,则可以在以下位置找到安全配置文件:
/etc/firejail/
用户应将其配置文件放在以下目录中:
~/.config/firejail
如果要扩展现有安全配置文件,可以使用包含配置文件路径的include,然后添加行。 这应该是这样的:
$ cat ~/.config/firejail/vlc.profile include /etc/firejail/vlc.profile
net none
如果您希望限制应用程序访问某个目录,您可以使用黑名单规则来实现这一目标。 例如,您可以将以下内容添加到安全配置文件中:
blacklist ${HOME}/Documents
实现相同结果的另一种方法是实际描述您希望限制的文件夹的完整路径:
blacklist /home/user/Documents
您可以通过许多不同的方式配置安全配置文件,例如禁止访问,允许只读访问等。如果您有兴趣构建自定义配置文件,可以查看以下firejail说明。
对于想要保护系统的安全用户来说,Firejail是一个很棒的工具。
如何在Linux中使用Firejail运行应用程序的更多相关文章
- 如何在Linux中tomcat下运行一个web项目
如何在Linux中tomcat下运行一个web项目 然后启动Tomcat项目.运行的运行后会自动将war包解压. 如果页面报404,那么请查看tomcat日志文件,它一定是报错了....
- 如何在Linux中查看所有正在运行的进程
如何在Linux中查看所有正在运行的进程 FROM:http://os.51cto.com/art/201101/244090.htm 进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系 ...
- 如何在 Linux 中查看进程占用的端口号【转】
对于 Linux 系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的.如果你需要处理端口相关的问题,这篇文章可能会对你有用. 端口是 Linux 系统上特定进程之间逻辑连接的标识, ...
- 如何在Linux中添加新的系统调用
系统调用是应用程序和操作系统内核之间的功能接口.其主要目的是使得用户 可以使用操作系统提供的有关设备管理.输入/输入系统.文件系统和进程控制. 通信以及存储管理等方面的功能,而不必了解系统程序的内部结 ...
- (转)如何在Linux中统计一个进程的线程数
如何在Linux中统计一个进程的线程数 原文:http://os.51cto.com/art/201509/491728.htm 我正在运行一个程序,它在运行时会派生出多个线程.我想知道程序在运行时会 ...
- 如何在Linux中使用sFTP上传或下载文件与文件夹
如何在Linux中使用sFTP上传或下载文件与文件夹 sFTP(安全文件传输程序)是一种安全的交互式文件传输程序,其工作方式与 FTP(文件传输协议)类似. 然而,sFTP 比 FTP 更安全;它通过 ...
- 如何查看 Linux 中所有正在运行的服务
有许多方法和工具可以查看 Linux 中所有正在运行的服务.大多数管理员会在 System V(SysV)初始化系统中使用 service service-name status 或 /etc/ini ...
- 如何在Linux中结合示例使用'cat'和'tac'命令
上一篇我们讲到了cat的使用示例:https://www.cnblogs.com/WeiLian1024/p/11863057.html 本篇我们将继续延续Cat讲讲Tac 本文是我们讲讲Linux技 ...
- 如何在Linux中自动删除或清理/tmp文件夹内容?
每个Linux系统都有一个名为的目录/tmp,该目录已挂载了单独的文件系统. 它具有称为tmpfs的特殊文件系统.这是一个虚拟文件系统,操作系统将在系统引导时自动挂载/tmp挂载点. 如果要根据应用程 ...
随机推荐
- 火币网API文档——REST API 错误码
错误码 行情 API 错误码 错误码 描述 bad-request 错误请求 invalid-parameter 参数错 invalid-command 指令错 code 的具体解释, 参考对应的er ...
- Python3学习之路~3.1 函数基本语法及特性、返回值、参数、局部与全局变量
1 函数基本语法及特性 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 语法定义: d ...
- Object 转 json 工具类
/** * 把数据对象转换成json字符串 DTO对象形如:{"id" : idValue, "name" : nameValue, ...} * 数组对象形如 ...
- Kubernetes总结
1.Kubernetes简介 在了解Kubernetes之前,我们有必要先简单了解一下传统的运维模式.在传统的项目架构中(单体or微服务),我们一般将项目打包为war或fatJar的方式进行部署. 在 ...
- Linux命令:xargs命令详解,xargs与管道的区别
阅读目录 为什么要用xargs,问题的来源 xargs是什么,与管道有什么不同 xargs的一些有用的选项 回到顶部 为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人 ...
- 4个项目带你学习ThinkPHP
ThinkPHP是一个快速.兼容而且简单的轻量级国产PHP开发框架,这里分享4个项目教程,带你掌握ThinkPHP,并能够在实践开发中应用. ThinkPHP框架实践 这个教程从ThinkPHP的入门 ...
- [Java in NetBeans] Lesson 02. Variables, Data Types and Assignment.
这个课程的参考视频在youtube. 主要学到的知识点有: Data Type: int, char, String, double, boolean. When into printf, int ( ...
- node操作 windows的appdata本地缓存文件
const os = require('os'); const path = require("path"); const fs = require("fs") ...
- 用Partimage创建或恢复分区备份
1 Preliminary Note Partimage is part of the system rescue CD found on http://www.sysresccd.org which ...
- visual studio Lua 调试
BabeLua是一款基于VS (简称VS)的免费开源的Lua集成开发环境,在Lua编辑和调试方面,具有如下功能和特性: ●Lua语法高亮 ●语法检查 ●自动补全 ●一键注释 ●格式化代码 ●自定义代码 ...