Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

pledge(2) and unveil(2) system calls on Nanos unikernel

License

NotificationsYou must be signed in to change notification settings

rinor/sandbox

Repository files navigation

Packagesandbox is a wrapper around OpenBSD's pledge(2) and unveil(2) system calls.

Can be used withNanossandboxklib -https://docs.ops.city/ops/klibs#sandbox

Can be safely used on other non-OpenBSD operating systems, where the syscalls arenoop.

Nanos ops config

{"Klibs": ["sandbox"  ],"ManifestPassthrough": {"sandbox": {"pledge": {},"unveil": {}    }  }}

pledge

package mainimport ("log""os""github.com/rinor/sandbox")funcmain() {ifsandbox.Noop() {log.Print("PLEDGE: calls won't have any effect (noop)")}else {log.Print("PLEDGE: calls will fail if not implemented in kernel")}log.Print("PLEDGE: calling PledgePromises(stdio error rpath)")err:=sandbox.PledgePromises("stdio error rpath")iferr!=nil {log.Fatalf("PLEDGE: PledgePromises - %q",err)}log.Print("PLEDGE: Readir should work - (rpath - enabled)")_,err=os.ReadDir(".")iferr!=nil {log.Fatalf("%q",err)}log.Print("PLEDGE: Readir OK")log.Print("PLEDGE: Disabling rpath")err=sandbox.PledgePromises("stdio error")iferr!=nil {log.Fatalf("PLEDGE: PledgePromises - %q",err)}log.Print("PLEDGE: Readir should fail - (rpath - disabled)")_,err=os.ReadDir(".")iferr!=nil {log.Fatalf("PLEDGE: Readir %q",err)}}

unveil

package mainimport ("log""os""github.com/rinor/sandbox")funcmain() {ifsandbox.Noop() {log.Print("UNVEIL: calls won't have any effect (noop)")}else {log.Print("UNVEIL: calls will fail if not implemented in kernel")}log.Print("UNVEIL: calling Unveil(/, rwxc)")err:=sandbox.Unveil("/","rwxc")iferr!=nil {log.Fatalf("UNVEIL: unveil - %q",err)}log.Print("UNVEIL: Readir should work - (unveil r - enabled)")_,err=os.ReadDir("/")iferr!=nil {log.Fatalf("%q",err)}log.Print("UNVEIL: Readir OK")log.Print("UNVEIL: Disabling r")err=sandbox.Unveil("/","wxc")iferr!=nil {log.Fatalf("UNVEIL: unveil - %q",err)}log.Print("UNVEIL: Readir should fail - (unveil r - disabled)")_,err=os.ReadDir("/")iferr!=nil {log.Printf("UNVEIL: Readir %q",err)}log.Print("UNVEIL: calling unveilBlock")err=sandbox.UnveilBlock()iferr!=nil {log.Fatalf("UNVEIL: unveilBlock - %q",err)}log.Print("UNVEIL: unveil calls should fail - (unveilBlock called)")err=sandbox.Unveil("/","rwxc")iferr!=nil {log.Fatalf("UNVEIL: unveil - %q",err)}}

About

pledge(2) and unveil(2) system calls on Nanos unikernel

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp