- Notifications
You must be signed in to change notification settings - Fork0
pledge(2) and unveil(2) system calls on Nanos unikernel
License
NotificationsYou must be signed in to change notification settings
rinor/sandbox
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Packagesandbox is a wrapper around OpenBSD's pledge(2) and unveil(2) system calls.
Can be used withNanossandbox
klib -https://docs.ops.city/ops/klibs#sandbox
Can be safely used on other non-OpenBSD operating systems, where the syscalls arenoop
.
{"Klibs": ["sandbox" ],"ManifestPassthrough": {"sandbox": {"pledge": {},"unveil": {} } }}
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)}}
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
Packages0
No packages published