1 个不稳定版本
0.1.0 | 2024 年 5 月 21 日 |
---|
#726 in Unix APIs
7KB
77 代码行数(不包括注释)
Flatpak Unsandbox
此 Rust crate 允许 Rust flatpak 应用在沙盒外运行。
此 crate 不适用于什么
- 绕过 Flatpak 的限制 - Flatpak 的沙盒对于确保用户安全非常有用,此 crate 不用于恶意绕过限制。
注意:您必须已启用
--talk-name=org.freedesktop.Flatpak
权限,这已经是沙盒中最大的漏洞。请谨慎使用此库。
- 运行任何您不愿意配置沙盒的常规应用 - 请尽量使用 Flatpak 的沙盒。
此 crate 适用于什么
-
必须运行在宿主机上的应用,且别无选择。
-
需要在宿主机上运行其功能特定部分的应用
需要此 crate 的应用示例
-
修改并使用宿主机的 flatpak 安装的软件包: (例如,Flatrun)
-
不是由打包者构建的应用,并且没有其他方法在 Flatpak 的沙盒下打包应用(非常罕见)。
-
需要系统服务的应用
警告:通过 flatpak 打包这些应用可能是个坏主意,因为我们无法确保宿主机系统上存在依赖项!
示例用法
运行未 flatpaked 的程序
// src/main.rs
fn main() -> Result<(), MyError> {
if flatpak_unsandbox::unsandbox(None)? {
return Ok(())
}
// Unsandboxed functionality here...
}
运行另一个未 flatpaked 的程序
// src/main.rs
fn main() -> Result<(), MyError> {
// Sandboxed functionality
// Ensure this other program ran
if !flatpak_unsandbox::unsandbox(Some(Program::new(
"/libexec/my-agent-program", None)
))? {
return Ok(())
}
// More sandboxed functionality here...
}
贡献
对于此 crate,不需要更新太多,但如果存在问题,您可以提交错误报告或尝试修复问题并提交 PR!
依赖项
~7–16MB
~219K SLoC