app/config: support creating symlinks within sandbox
test / test (push) Successful in 21s
Details
test / test (push) Successful in 21s
Details
This is already supported by the underlying bwrap helper. This change exposes access to it in Config. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
This commit is contained in:
parent
050ffceb27
commit
b932ac8260
|
@ -1,7 +1,6 @@
|
||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/gob"
|
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"git.ophivana.moe/security/fortify/dbus"
|
"git.ophivana.moe/security/fortify/dbus"
|
||||||
|
@ -9,10 +8,6 @@ import (
|
||||||
"git.ophivana.moe/security/fortify/internal/system"
|
"git.ophivana.moe/security/fortify/internal/system"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
|
||||||
gob.Register(new(bwrap.PermConfig[*bwrap.TmpfsConfig]))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Config is used to seal an *App
|
// Config is used to seal an *App
|
||||||
type Config struct {
|
type Config struct {
|
||||||
// D-Bus application ID
|
// D-Bus application ID
|
||||||
|
@ -61,6 +56,8 @@ type SandboxConfig struct {
|
||||||
Env map[string]string `json:"env"`
|
Env map[string]string `json:"env"`
|
||||||
// sandbox host filesystem access
|
// sandbox host filesystem access
|
||||||
Filesystem []*FilesystemConfig `json:"filesystem"`
|
Filesystem []*FilesystemConfig `json:"filesystem"`
|
||||||
|
// symlinks created inside the sandbox
|
||||||
|
Link [][2]string `json:"symlink"`
|
||||||
// paths to override by mounting tmpfs over them
|
// paths to override by mounting tmpfs over them
|
||||||
Override []string `json:"override"`
|
Override []string `json:"override"`
|
||||||
}
|
}
|
||||||
|
@ -99,7 +96,8 @@ func (s *SandboxConfig) Bwrap() *bwrap.Config {
|
||||||
Chmod: make(map[string]os.FileMode),
|
Chmod: make(map[string]os.FileMode),
|
||||||
}).
|
}).
|
||||||
SetUID(65534).SetGID(65534).
|
SetUID(65534).SetGID(65534).
|
||||||
Procfs("/proc").DevTmpfs("/dev").Mqueue("/dev/mqueue")
|
Procfs("/proc").DevTmpfs("/dev").Mqueue("/dev/mqueue").
|
||||||
|
Tmpfs("/dev/fortify", 4*1024)
|
||||||
|
|
||||||
for _, c := range s.Filesystem {
|
for _, c := range s.Filesystem {
|
||||||
if c == nil {
|
if c == nil {
|
||||||
|
@ -113,6 +111,10 @@ func (s *SandboxConfig) Bwrap() *bwrap.Config {
|
||||||
conf.Bind(src, dest, !c.Must, c.Write, c.Device)
|
conf.Bind(src, dest, !c.Must, c.Write, c.Device)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, l := range s.Link {
|
||||||
|
conf.Symlink(l[0], l[1])
|
||||||
|
}
|
||||||
|
|
||||||
return conf
|
return conf
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,6 +151,7 @@ func Template() *Config {
|
||||||
{Src: "/data/user/0", Dst: "/data/data", Write: true, Must: true},
|
{Src: "/data/user/0", Dst: "/data/data", Write: true, Must: true},
|
||||||
{Src: "/var/tmp", Write: true},
|
{Src: "/var/tmp", Write: true},
|
||||||
},
|
},
|
||||||
|
Link: [][2]string{{"/dev/fortify/etc", "/etc"}},
|
||||||
Override: []string{"/var/run/nscd"},
|
Override: []string{"/var/run/nscd"},
|
||||||
},
|
},
|
||||||
SystemBus: &dbus.Config{
|
SystemBus: &dbus.Config{
|
||||||
|
|
Loading…
Reference in New Issue