#flatpak #sandbox #linux

flatpak-unsandbox

在沙盒外运行您的 flatpak 应用

1 个不稳定版本

0.1.0 2024 年 5 月 21 日

#726 in Unix APIs

MIT 许可证

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