app/seal: symlink /etc entries in permissive default
test / test (push) Successful in 20s
Details
test / test (push) Successful in 20s
Details
Fortify overrides /etc/passwd and /etc/group in the sandbox. Bind mounting /etc results in them being replaced when the passwd database is updated on host. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
This commit is contained in:
parent
b932ac8260
commit
8fa791a2f8
|
@ -163,15 +163,17 @@ func (a *app) Seal(config *Config) error {
|
||||||
} else {
|
} else {
|
||||||
b := make([]*FilesystemConfig, 0, len(d))
|
b := make([]*FilesystemConfig, 0, len(d))
|
||||||
for _, ent := range d {
|
for _, ent := range d {
|
||||||
name := ent.Name()
|
p := "/" + ent.Name()
|
||||||
switch name {
|
switch p {
|
||||||
case "proc":
|
case "/proc":
|
||||||
case "dev":
|
case "/dev":
|
||||||
case "run":
|
case "/run":
|
||||||
case "tmp":
|
case "/tmp":
|
||||||
case "mnt":
|
case "/mnt":
|
||||||
|
|
||||||
|
case "/etc":
|
||||||
|
b = append(b, &FilesystemConfig{Src: p, Dst: "/dev/fortify/etc", Write: false, Must: true})
|
||||||
default:
|
default:
|
||||||
p := "/" + name
|
|
||||||
b = append(b, &FilesystemConfig{Src: p, Write: true, Must: true})
|
b = append(b, &FilesystemConfig{Src: p, Write: true, Must: true})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -203,6 +205,32 @@ func (a *app) Seal(config *Config) error {
|
||||||
if config.Confinement.Enablements.Has(system.EX11) || config.Confinement.Enablements.Has(system.EWayland) {
|
if config.Confinement.Enablements.Has(system.EX11) || config.Confinement.Enablements.Has(system.EWayland) {
|
||||||
conf.Filesystem = append(conf.Filesystem, &FilesystemConfig{Src: "/dev/dri", Device: true})
|
conf.Filesystem = append(conf.Filesystem, &FilesystemConfig{Src: "/dev/dri", Device: true})
|
||||||
}
|
}
|
||||||
|
// link host /etc to prevent passwd/group from being overwritten
|
||||||
|
if d, err := a.os.ReadDir("/etc"); err != nil {
|
||||||
|
return err
|
||||||
|
} else {
|
||||||
|
b := make([][2]string, 0, len(d))
|
||||||
|
for _, ent := range d {
|
||||||
|
name := ent.Name()
|
||||||
|
switch name {
|
||||||
|
case "passwd":
|
||||||
|
case "group":
|
||||||
|
|
||||||
|
case "mtab":
|
||||||
|
b = append(b, [2]string{
|
||||||
|
"/proc/mounts",
|
||||||
|
"/etc/" + name,
|
||||||
|
})
|
||||||
|
default:
|
||||||
|
b = append(b, [2]string{
|
||||||
|
"/dev/fortify/etc/" + name,
|
||||||
|
"/etc/" + name,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
conf.Link = append(conf.Link, b...)
|
||||||
|
}
|
||||||
|
|
||||||
config.Confinement.Sandbox = conf
|
config.Confinement.Sandbox = conf
|
||||||
}
|
}
|
||||||
seal.sys.bwrap = config.Confinement.Sandbox.Bwrap()
|
seal.sys.bwrap = config.Confinement.Sandbox.Bwrap()
|
||||||
|
|
Loading…
Reference in New Issue