Skip to main content

Crate nanosandbox

Crate nanosandbox 

Source
Expand description

§Nanobox

A lightweight cross-platform sandbox for secure code execution.

§Platform Support

PlatformImplementationStatus
Linuxnamespaces, cgroups v2, seccomp✅ Full support
macOSsandbox-exec, App Sandbox✅ Full support
WindowsJob Objects, CreateRestrictedToken✅ Full support

§Quick Start

use nanosandbox::{Sandbox, Permission, MB};
use std::time::Duration;

let sandbox = Sandbox::builder()
    .mount("/data/input", "/input", Permission::ReadOnly)
    .memory_limit(512 * MB)
    .wall_time_limit(Duration::from_secs(30))
    .build()
    .unwrap();

let result = sandbox.run("python3", &["-c", "print('hello')"]).unwrap();
println!("{}", result.stdout);

Re-exports§

pub use error::Result;
pub use error::SandboxError;
pub use sandbox::Sandbox;
pub use builder::SandboxBuilder;
pub use builder::Permission;
pub use builder::NetworkMode;
pub use builder::SeccompProfile;
pub use result::ExecutionResult;

Modules§

builder
Sandbox builder implementation
error
Error types for nanobox
network
Network control module
platform
Platform abstraction layer
result
Execution result types
sandbox
Sandbox implementation

Constants§

GB
1 GB in bytes
KB
1 KB in bytes
MB
1 MB in bytes

Functions§

is_platform_supported
Check if the current platform supports sandboxing
platform_name
Get the current platform name