Compare commits
4 Commits
v0.2.0
...
92f510a647
| Author | SHA1 | Date | |
|---|---|---|---|
|
92f510a647
|
|||
|
acb6931f3e
|
|||
|
9d932d1039
|
|||
|
9bc8532d56
|
@@ -162,8 +162,12 @@ func buildCommand(out io.Writer) command.Command {
|
|||||||
|
|
||||||
// override log from configuration
|
// override log from configuration
|
||||||
if dbusVerbose {
|
if dbusVerbose {
|
||||||
config.SessionBus.Log = true
|
if config.SessionBus != nil {
|
||||||
config.SystemBus.Log = true
|
config.SessionBus.Log = true
|
||||||
|
}
|
||||||
|
if config.SystemBus != nil {
|
||||||
|
config.SystemBus.Log = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ var containerTestCases = []struct {
|
|||||||
ent("/tty", "/dev/tty", "rw,nosuid", "devtmpfs", "devtmpfs", ignore),
|
ent("/tty", "/dev/tty", "rw,nosuid", "devtmpfs", "devtmpfs", ignore),
|
||||||
ent("/", "/dev/pts", "rw,nosuid,noexec,relatime", "devpts", "devpts", "rw,mode=620,ptmxmode=666"),
|
ent("/", "/dev/pts", "rw,nosuid,noexec,relatime", "devpts", "devpts", "rw,mode=620,ptmxmode=666"),
|
||||||
ent("/", "/dev/mqueue", "rw,nosuid,nodev,noexec,relatime", "mqueue", "mqueue", "rw"),
|
ent("/", "/dev/mqueue", "rw,nosuid,nodev,noexec,relatime", "mqueue", "mqueue", "rw"),
|
||||||
|
ent("/", "/dev/shm", "rw,nosuid,nodev,relatime", "tmpfs", "tmpfs", ignore),
|
||||||
),
|
),
|
||||||
1971, 100, nil, 0, seccomp.PresetStrict},
|
1971, 100, nil, 0, seccomp.PresetStrict},
|
||||||
|
|
||||||
@@ -116,6 +117,7 @@ var containerTestCases = []struct {
|
|||||||
ent("/urandom", "/dev/urandom", "rw,nosuid", "devtmpfs", "devtmpfs", ignore),
|
ent("/urandom", "/dev/urandom", "rw,nosuid", "devtmpfs", "devtmpfs", ignore),
|
||||||
ent("/tty", "/dev/tty", "rw,nosuid", "devtmpfs", "devtmpfs", ignore),
|
ent("/tty", "/dev/tty", "rw,nosuid", "devtmpfs", "devtmpfs", ignore),
|
||||||
ent("/", "/dev/pts", "rw,nosuid,noexec,relatime", "devpts", "devpts", "rw,mode=620,ptmxmode=666"),
|
ent("/", "/dev/pts", "rw,nosuid,noexec,relatime", "devpts", "devpts", "rw,mode=620,ptmxmode=666"),
|
||||||
|
ent("/", "/dev/shm", "rw,nosuid,nodev,relatime", "tmpfs", "tmpfs", ignore),
|
||||||
),
|
),
|
||||||
1971, 100, nil, 0, seccomp.PresetStrict},
|
1971, 100, nil, 0, seccomp.PresetStrict},
|
||||||
|
|
||||||
|
|||||||
@@ -72,8 +72,9 @@ func (d *MountDevOp) apply(state *setupState, k syscallDispatcher) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
devShmPath := path.Join(target, "shm")
|
||||||
devPtsPath := path.Join(target, "pts")
|
devPtsPath := path.Join(target, "pts")
|
||||||
for _, name := range []string{path.Join(target, "shm"), devPtsPath} {
|
for _, name := range []string{devShmPath, devPtsPath} {
|
||||||
if err := k.mkdir(name, state.ParentPerm); err != nil {
|
if err := k.mkdir(name, state.ParentPerm); err != nil {
|
||||||
return wrapErrSelf(err)
|
return wrapErrSelf(err)
|
||||||
}
|
}
|
||||||
@@ -117,8 +118,12 @@ func (d *MountDevOp) apply(state *setupState, k syscallDispatcher) error {
|
|||||||
if d.Write {
|
if d.Write {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return wrapErrSuffix(k.remount(target, MS_RDONLY),
|
|
||||||
fmt.Sprintf("cannot remount %q:", target))
|
if err := k.remount(target, MS_RDONLY); err != nil {
|
||||||
|
return wrapErrSuffix(k.remount(target, MS_RDONLY),
|
||||||
|
fmt.Sprintf("cannot remount %q:", target))
|
||||||
|
}
|
||||||
|
return k.mountTmpfs(SourceTmpfs, devShmPath, MS_NOSUID|MS_NODEV, 0, 01777)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *MountDevOp) Is(op Op) bool {
|
func (d *MountDevOp) Is(op Op) bool {
|
||||||
|
|||||||
@@ -645,6 +645,7 @@ func TestMountDevOp(t *testing.T) {
|
|||||||
{"readlink", expectArgs{"/host/proc/self/fd/1"}, "/dev/pts/2", nil},
|
{"readlink", expectArgs{"/host/proc/self/fd/1"}, "/dev/pts/2", nil},
|
||||||
{"bindMount", expectArgs{"/host/dev/pts/2", "/sysroot/dev/console", uintptr(0), false}, nil, nil},
|
{"bindMount", expectArgs{"/host/dev/pts/2", "/sysroot/dev/console", uintptr(0), false}, nil, nil},
|
||||||
{"remount", expectArgs{"/sysroot/dev", uintptr(1)}, nil, nil},
|
{"remount", expectArgs{"/sysroot/dev", uintptr(1)}, nil, nil},
|
||||||
|
{"mountTmpfs", expectArgs{"tmpfs", "/sysroot/dev/shm", uintptr(0x6), 0, os.FileMode(01777)}, nil, nil},
|
||||||
}, nil},
|
}, nil},
|
||||||
|
|
||||||
{"success rw", &Params{ParentPerm: 0750, RetainSession: true}, &MountDevOp{
|
{"success rw", &Params{ParentPerm: 0750, RetainSession: true}, &MountDevOp{
|
||||||
@@ -715,6 +716,7 @@ func TestMountDevOp(t *testing.T) {
|
|||||||
{"mkdir", expectArgs{"/sysroot/dev/mqueue", os.FileMode(0750)}, nil, nil},
|
{"mkdir", expectArgs{"/sysroot/dev/mqueue", os.FileMode(0750)}, nil, nil},
|
||||||
{"mount", expectArgs{"mqueue", "/sysroot/dev/mqueue", "mqueue", uintptr(0xe), ""}, nil, nil},
|
{"mount", expectArgs{"mqueue", "/sysroot/dev/mqueue", "mqueue", uintptr(0xe), ""}, nil, nil},
|
||||||
{"remount", expectArgs{"/sysroot/dev", uintptr(1)}, nil, nil},
|
{"remount", expectArgs{"/sysroot/dev", uintptr(1)}, nil, nil},
|
||||||
|
{"mountTmpfs", expectArgs{"tmpfs", "/sysroot/dev/shm", uintptr(0x6), 0, os.FileMode(01777)}, nil, nil},
|
||||||
}, nil},
|
}, nil},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ const (
|
|||||||
// Note that any source value is allowed when fstype is [FstypeOverlay].
|
// Note that any source value is allowed when fstype is [FstypeOverlay].
|
||||||
SourceOverlay = "overlay"
|
SourceOverlay = "overlay"
|
||||||
|
|
||||||
|
// SourceTmpfs is used when mounting tmpfs.
|
||||||
|
SourceTmpfs = "tmpfs"
|
||||||
// SourceTmpfsRootfs is used when mounting the tmpfs instance backing the intermediate root.
|
// SourceTmpfsRootfs is used when mounting the tmpfs instance backing the intermediate root.
|
||||||
SourceTmpfsRootfs = "rootfs"
|
SourceTmpfsRootfs = "rootfs"
|
||||||
// SourceTmpfsDevtmpfs is used when mounting tmpfs representing a subset of host devtmpfs.
|
// SourceTmpfsDevtmpfs is used when mounting tmpfs representing a subset of host devtmpfs.
|
||||||
|
|||||||
@@ -148,6 +148,7 @@ var testCasesNixos = []sealTestCase{
|
|||||||
Etc(m("/etc/"), "8e2c76b066dabe574cf073bdb46eb5c1").
|
Etc(m("/etc/"), "8e2c76b066dabe574cf073bdb46eb5c1").
|
||||||
Bind(m("/var/lib/persist/module/hakurei/0/1"), m("/var/lib/persist/module/hakurei/0/1"), container.BindWritable|container.BindEnsure).
|
Bind(m("/var/lib/persist/module/hakurei/0/1"), m("/var/lib/persist/module/hakurei/0/1"), container.BindWritable|container.BindEnsure).
|
||||||
Remount(m("/dev/"), syscall.MS_RDONLY).
|
Remount(m("/dev/"), syscall.MS_RDONLY).
|
||||||
|
Tmpfs(m("/dev/shm"), 0, 01777).
|
||||||
Tmpfs(m("/run/user/"), 4096, 0755).
|
Tmpfs(m("/run/user/"), 4096, 0755).
|
||||||
Bind(m("/tmp/hakurei.1971/runtime/1"), m("/run/user/1971"), container.BindWritable).
|
Bind(m("/tmp/hakurei.1971/runtime/1"), m("/run/user/1971"), container.BindWritable).
|
||||||
Bind(m("/tmp/hakurei.1971/tmpdir/1"), m("/tmp/"), container.BindWritable).
|
Bind(m("/tmp/hakurei.1971/tmpdir/1"), m("/tmp/"), container.BindWritable).
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ var testCasesPd = []sealTestCase{
|
|||||||
Tmpfs(m("/run/user/1971"), 8192, 0755).
|
Tmpfs(m("/run/user/1971"), 8192, 0755).
|
||||||
Tmpfs(m("/run/dbus"), 8192, 0755).
|
Tmpfs(m("/run/dbus"), 8192, 0755).
|
||||||
Remount(m("/dev/"), syscall.MS_RDONLY).
|
Remount(m("/dev/"), syscall.MS_RDONLY).
|
||||||
|
Tmpfs(m("/dev/shm"), 0, 01777).
|
||||||
Tmpfs(m("/run/user/"), 4096, 0755).
|
Tmpfs(m("/run/user/"), 4096, 0755).
|
||||||
Bind(m("/tmp/hakurei.1971/runtime/0"), m("/run/user/65534"), container.BindWritable).
|
Bind(m("/tmp/hakurei.1971/runtime/0"), m("/run/user/65534"), container.BindWritable).
|
||||||
Bind(m("/tmp/hakurei.1971/tmpdir/0"), m("/tmp/"), container.BindWritable).
|
Bind(m("/tmp/hakurei.1971/tmpdir/0"), m("/tmp/"), container.BindWritable).
|
||||||
@@ -189,6 +190,7 @@ var testCasesPd = []sealTestCase{
|
|||||||
Tmpfs(m("/run/user/1971"), 8192, 0755).
|
Tmpfs(m("/run/user/1971"), 8192, 0755).
|
||||||
Tmpfs(m("/run/dbus"), 8192, 0755).
|
Tmpfs(m("/run/dbus"), 8192, 0755).
|
||||||
Remount(m("/dev/"), syscall.MS_RDONLY).
|
Remount(m("/dev/"), syscall.MS_RDONLY).
|
||||||
|
Tmpfs(m("/dev/shm"), 0, 01777).
|
||||||
Tmpfs(m("/run/user/"), 4096, 0755).
|
Tmpfs(m("/run/user/"), 4096, 0755).
|
||||||
Bind(m("/tmp/hakurei.1971/runtime/9"), m("/run/user/65534"), container.BindWritable).
|
Bind(m("/tmp/hakurei.1971/runtime/9"), m("/run/user/65534"), container.BindWritable).
|
||||||
Bind(m("/tmp/hakurei.1971/tmpdir/9"), m("/tmp/"), container.BindWritable).
|
Bind(m("/tmp/hakurei.1971/tmpdir/9"), m("/tmp/"), container.BindWritable).
|
||||||
|
|||||||
@@ -233,7 +233,9 @@ func newContainer(s *hst.ContainerConfig, os sys.State, prefix string, uid, gid
|
|||||||
|
|
||||||
// no more ContainerConfig paths beyond this point
|
// no more ContainerConfig paths beyond this point
|
||||||
if !s.Device {
|
if !s.Device {
|
||||||
params.Remount(container.AbsFHSDev, syscall.MS_RDONLY)
|
params.
|
||||||
|
Remount(container.AbsFHSDev, syscall.MS_RDONLY).
|
||||||
|
Tmpfs(container.AbsFHSDev.Append("shm"), 0, 01777)
|
||||||
}
|
}
|
||||||
|
|
||||||
return params, maps.Clone(s.Env), nil
|
return params, maps.Clone(s.Env), nil
|
||||||
|
|||||||
@@ -418,7 +418,9 @@ func (seal *outcome) finalise(ctx context.Context, sys sys.State, config *hst.Co
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
seal.sys.UpdatePermType(system.EX11, socketPath.String(), acl.Read, acl.Write, acl.Execute)
|
seal.sys.UpdatePermType(system.EX11, socketPath.String(), acl.Read, acl.Write, acl.Execute)
|
||||||
d = "unix:" + socketPath.String()
|
if !config.Container.HostAbstract {
|
||||||
|
d = "unix:" + socketPath.String()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ package
|
|||||||
|
|
||||||
|
|
||||||
*Default:*
|
*Default:*
|
||||||
` <derivation hakurei-static-x86_64-unknown-linux-musl-0.2.0> `
|
` <derivation hakurei-static-x86_64-unknown-linux-musl-0.2.1> `
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -759,7 +759,7 @@ package
|
|||||||
|
|
||||||
|
|
||||||
*Default:*
|
*Default:*
|
||||||
` <derivation hakurei-hsu-0.2.0> `
|
` <derivation hakurei-hsu-0.2.1> `
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "hakurei";
|
pname = "hakurei";
|
||||||
version = "0.2.0";
|
version = "0.2.1";
|
||||||
|
|
||||||
srcFiltered = builtins.path {
|
srcFiltered = builtins.path {
|
||||||
name = "${pname}-src";
|
name = "${pname}-src";
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ let
|
|||||||
mapRealUid
|
mapRealUid
|
||||||
useCommonPaths
|
useCommonPaths
|
||||||
userns
|
userns
|
||||||
|
hostAbstract
|
||||||
;
|
;
|
||||||
enablements = {
|
enablements = {
|
||||||
inherit (tc) x11;
|
inherit (tc) x11;
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ in
|
|||||||
useCommonPaths = true;
|
useCommonPaths = true;
|
||||||
userns = false;
|
userns = false;
|
||||||
x11 = true;
|
x11 = true;
|
||||||
|
hostAbstract = false;
|
||||||
|
|
||||||
# 0, PresetStrict
|
# 0, PresetStrict
|
||||||
expectedFilter = {
|
expectedFilter = {
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ in
|
|||||||
useCommonPaths = true;
|
useCommonPaths = true;
|
||||||
userns = false;
|
userns = false;
|
||||||
x11 = false;
|
x11 = false;
|
||||||
|
hostAbstract = false;
|
||||||
|
|
||||||
# 0, PresetStrict
|
# 0, PresetStrict
|
||||||
expectedFilter = {
|
expectedFilter = {
|
||||||
@@ -72,7 +73,7 @@ in
|
|||||||
ptmx = fs "80001ff" null null;
|
ptmx = fs "80001ff" null null;
|
||||||
pts = fs "800001ed" { ptmx = fs "42001b6" null null; } null;
|
pts = fs "800001ed" { ptmx = fs "42001b6" null null; } null;
|
||||||
random = fs "42001b6" null null;
|
random = fs "42001b6" null null;
|
||||||
shm = fs "800001ed" { } null;
|
shm = fs "801001ff" { } null;
|
||||||
stderr = fs "80001ff" null null;
|
stderr = fs "80001ff" null null;
|
||||||
stdin = fs "80001ff" null null;
|
stdin = fs "80001ff" null null;
|
||||||
stdout = fs "80001ff" null null;
|
stdout = fs "80001ff" null null;
|
||||||
@@ -256,6 +257,7 @@ in
|
|||||||
(ent "/" "/.hakurei/store" "rw,relatime" "overlay" "overlay" "rw,lowerdir=/host/nix/.ro-store:/host/nix/.rw-store/upper,upperdir=/host/tmp/.hakurei-store-rw/upper,workdir=/host/tmp/.hakurei-store-rw/work,redirect_dir=nofollow,userxattr")
|
(ent "/" "/.hakurei/store" "rw,relatime" "overlay" "overlay" "rw,lowerdir=/host/nix/.ro-store:/host/nix/.rw-store/upper,upperdir=/host/tmp/.hakurei-store-rw/upper,workdir=/host/tmp/.hakurei-store-rw/work,redirect_dir=nofollow,userxattr")
|
||||||
(ent "/etc" ignore "ro,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/etc" ignore "ro,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
(ent "/var/lib/hakurei/u0/a3" "/var/lib/hakurei/u0/a3" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/var/lib/hakurei/u0/a3" "/var/lib/hakurei/u0/a3" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
|
(ent "/" "/dev/shm" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,uid=1000003,gid=1000003")
|
||||||
(ent "/" "/run/user" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,size=4k,mode=755,uid=1000003,gid=1000003")
|
(ent "/" "/run/user" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,size=4k,mode=755,uid=1000003,gid=1000003")
|
||||||
(ent "/tmp/hakurei.0/runtime/3" "/run/user/1000" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/tmp/hakurei.0/runtime/3" "/run/user/1000" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
(ent "/tmp/hakurei.0/tmpdir/3" "/tmp" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/tmp/hakurei.0/tmpdir/3" "/tmp" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
ptmx = fs "80001ff" null null;
|
ptmx = fs "80001ff" null null;
|
||||||
pts = fs "800001ed" { ptmx = fs "42001b6" null null; } null;
|
pts = fs "800001ed" { ptmx = fs "42001b6" null null; } null;
|
||||||
random = fs "42001b6" null null;
|
random = fs "42001b6" null null;
|
||||||
shm = fs "800001ed" { } null;
|
shm = fs "801001ff" { } null;
|
||||||
stderr = fs "80001ff" null null;
|
stderr = fs "80001ff" null null;
|
||||||
stdin = fs "80001ff" null null;
|
stdin = fs "80001ff" null null;
|
||||||
stdout = fs "80001ff" null null;
|
stdout = fs "80001ff" null null;
|
||||||
@@ -185,6 +185,7 @@
|
|||||||
(ent "/etc" ignore "ro,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/etc" ignore "ro,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
(ent "/" "/run/user/1000" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,size=8k,mode=755,uid=1000000,gid=1000000")
|
(ent "/" "/run/user/1000" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,size=8k,mode=755,uid=1000000,gid=1000000")
|
||||||
(ent "/" "/run/dbus" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,size=8k,mode=755,uid=1000000,gid=1000000")
|
(ent "/" "/run/dbus" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,size=8k,mode=755,uid=1000000,gid=1000000")
|
||||||
|
(ent "/" "/dev/shm" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,uid=1000000,gid=1000000")
|
||||||
(ent "/" "/run/user" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,size=4k,mode=755,uid=1000000,gid=1000000")
|
(ent "/" "/run/user" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,size=4k,mode=755,uid=1000000,gid=1000000")
|
||||||
(ent "/tmp/hakurei.0/runtime/0" "/run/user/65534" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/tmp/hakurei.0/runtime/0" "/run/user/65534" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
(ent "/tmp/hakurei.0/tmpdir/0" "/tmp" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/tmp/hakurei.0/tmpdir/0" "/tmp" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ in
|
|||||||
useCommonPaths = false;
|
useCommonPaths = false;
|
||||||
userns = true;
|
userns = true;
|
||||||
x11 = false;
|
x11 = false;
|
||||||
|
hostAbstract = false;
|
||||||
|
|
||||||
# 0, PresetExt | PresetDenyDevel
|
# 0, PresetExt | PresetDenyDevel
|
||||||
expectedFilter = {
|
expectedFilter = {
|
||||||
@@ -70,7 +71,7 @@ in
|
|||||||
ptmx = fs "80001ff" null null;
|
ptmx = fs "80001ff" null null;
|
||||||
pts = fs "800001ed" { ptmx = fs "42001b6" null null; } null;
|
pts = fs "800001ed" { ptmx = fs "42001b6" null null; } null;
|
||||||
random = fs "42001b6" null null;
|
random = fs "42001b6" null null;
|
||||||
shm = fs "800001ed" { } null;
|
shm = fs "801001ff" { } null;
|
||||||
stderr = fs "80001ff" null null;
|
stderr = fs "80001ff" null null;
|
||||||
stdin = fs "80001ff" null null;
|
stdin = fs "80001ff" null null;
|
||||||
stdout = fs "80001ff" null null;
|
stdout = fs "80001ff" null null;
|
||||||
@@ -251,6 +252,7 @@ in
|
|||||||
(ent "/dri" "/dev/dri" "rw,nosuid" "devtmpfs" "devtmpfs" ignore)
|
(ent "/dri" "/dev/dri" "rw,nosuid" "devtmpfs" "devtmpfs" ignore)
|
||||||
(ent "/etc" ignore "ro,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/etc" ignore "ro,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
(ent "/var/lib/hakurei/u0/a5" "/var/lib/hakurei/u0/a5" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/var/lib/hakurei/u0/a5" "/var/lib/hakurei/u0/a5" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
|
(ent "/" "/dev/shm" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,uid=1000005,gid=1000005")
|
||||||
(ent "/" "/run/user" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,size=4k,mode=755,uid=1000005,gid=1000005")
|
(ent "/" "/run/user" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,size=4k,mode=755,uid=1000005,gid=1000005")
|
||||||
(ent "/tmp/hakurei.0/runtime/5" "/run/user/65534" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/tmp/hakurei.0/runtime/5" "/run/user/65534" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
(ent "/tmp/hakurei.0/tmpdir/5" "/tmp" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/tmp/hakurei.0/tmpdir/5" "/tmp" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ in
|
|||||||
useCommonPaths = false;
|
useCommonPaths = false;
|
||||||
userns = false;
|
userns = false;
|
||||||
x11 = false;
|
x11 = false;
|
||||||
|
hostAbstract = false;
|
||||||
|
|
||||||
# 0, PresetStrict
|
# 0, PresetStrict
|
||||||
expectedFilter = {
|
expectedFilter = {
|
||||||
@@ -69,7 +70,7 @@ in
|
|||||||
ptmx = fs "80001ff" null null;
|
ptmx = fs "80001ff" null null;
|
||||||
pts = fs "800001ed" { ptmx = fs "42001b6" null null; } null;
|
pts = fs "800001ed" { ptmx = fs "42001b6" null null; } null;
|
||||||
random = fs "42001b6" null null;
|
random = fs "42001b6" null null;
|
||||||
shm = fs "800001ed" { } null;
|
shm = fs "801001ff" { } null;
|
||||||
stderr = fs "80001ff" null null;
|
stderr = fs "80001ff" null null;
|
||||||
stdin = fs "80001ff" null null;
|
stdin = fs "80001ff" null null;
|
||||||
stdout = fs "80001ff" null null;
|
stdout = fs "80001ff" null null;
|
||||||
@@ -249,6 +250,7 @@ in
|
|||||||
(ent "/dri" "/dev/dri" "rw,nosuid" "devtmpfs" "devtmpfs" ignore)
|
(ent "/dri" "/dev/dri" "rw,nosuid" "devtmpfs" "devtmpfs" ignore)
|
||||||
(ent "/etc" ignore "ro,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/etc" ignore "ro,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
(ent "/var/lib/hakurei/u0/a1" "/var/lib/hakurei/u0/a1" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/var/lib/hakurei/u0/a1" "/var/lib/hakurei/u0/a1" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
|
(ent "/" "/dev/shm" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,uid=1000001,gid=1000001")
|
||||||
(ent "/" "/run/user" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,size=4k,mode=755,uid=1000001,gid=1000001")
|
(ent "/" "/run/user" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,size=4k,mode=755,uid=1000001,gid=1000001")
|
||||||
(ent "/tmp/hakurei.0/runtime/1" "/run/user/65534" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/tmp/hakurei.0/runtime/1" "/run/user/65534" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
(ent "/tmp/hakurei.0/tmpdir/1" "/tmp" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/tmp/hakurei.0/tmpdir/1" "/tmp" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ in
|
|||||||
useCommonPaths = true;
|
useCommonPaths = true;
|
||||||
userns = false;
|
userns = false;
|
||||||
x11 = true;
|
x11 = true;
|
||||||
|
hostAbstract = true;
|
||||||
|
|
||||||
# 0, PresetExt | PresetDenyNS | PresetDenyDevel
|
# 0, PresetExt | PresetDenyNS | PresetDenyDevel
|
||||||
expectedFilter = {
|
expectedFilter = {
|
||||||
@@ -45,7 +46,7 @@ in
|
|||||||
want = {
|
want = {
|
||||||
env = [
|
env = [
|
||||||
"DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/65534/bus"
|
"DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/65534/bus"
|
||||||
"DISPLAY=unix:/tmp/.X11-unix/X0"
|
"DISPLAY=:0"
|
||||||
"HOME=/var/lib/hakurei/u0/a2"
|
"HOME=/var/lib/hakurei/u0/a2"
|
||||||
"PULSE_SERVER=unix:/run/user/65534/pulse/native"
|
"PULSE_SERVER=unix:/run/user/65534/pulse/native"
|
||||||
"SHELL=/run/current-system/sw/bin/bash"
|
"SHELL=/run/current-system/sw/bin/bash"
|
||||||
@@ -74,7 +75,7 @@ in
|
|||||||
ptmx = fs "80001ff" null null;
|
ptmx = fs "80001ff" null null;
|
||||||
pts = fs "800001ed" { ptmx = fs "42001b6" null null; } null;
|
pts = fs "800001ed" { ptmx = fs "42001b6" null null; } null;
|
||||||
random = fs "42001b6" null null;
|
random = fs "42001b6" null null;
|
||||||
shm = fs "800001ed" { } null;
|
shm = fs "801001ff" { } null;
|
||||||
stderr = fs "80001ff" null null;
|
stderr = fs "80001ff" null null;
|
||||||
stdin = fs "80001ff" null null;
|
stdin = fs "80001ff" null null;
|
||||||
stdout = fs "80001ff" null null;
|
stdout = fs "80001ff" null null;
|
||||||
@@ -261,6 +262,7 @@ in
|
|||||||
(ent "/" "/.hakurei/store" "rw,relatime" "overlay" "overlay" "rw,lowerdir=/host/nix/.ro-store:/host/nix/.rw-store/upper,upperdir=/host/tmp/.hakurei-store-rw/upper,workdir=/host/tmp/.hakurei-store-rw/work,redirect_dir=nofollow,uuid=on,userxattr")
|
(ent "/" "/.hakurei/store" "rw,relatime" "overlay" "overlay" "rw,lowerdir=/host/nix/.ro-store:/host/nix/.rw-store/upper,upperdir=/host/tmp/.hakurei-store-rw/upper,workdir=/host/tmp/.hakurei-store-rw/work,redirect_dir=nofollow,uuid=on,userxattr")
|
||||||
(ent "/etc" ignore "ro,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/etc" ignore "ro,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
(ent "/var/lib/hakurei/u0/a2" "/var/lib/hakurei/u0/a2" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/var/lib/hakurei/u0/a2" "/var/lib/hakurei/u0/a2" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
|
(ent "/" "/dev/shm" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,uid=1000002,gid=1000002")
|
||||||
(ent "/" "/run/user" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,size=4k,mode=755,uid=1000002,gid=1000002")
|
(ent "/" "/run/user" "rw,nosuid,nodev,relatime" "tmpfs" "ephemeral" "rw,size=4k,mode=755,uid=1000002,gid=1000002")
|
||||||
(ent "/tmp/hakurei.0/runtime/2" "/run/user/65534" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/tmp/hakurei.0/runtime/2" "/run/user/65534" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
(ent "/tmp/hakurei.0/tmpdir/2" "/tmp" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
(ent "/tmp/hakurei.0/tmpdir/2" "/tmp" "rw,nosuid,nodev,relatime" "ext4" "/dev/disk/by-label/nixos" "rw")
|
||||||
@@ -275,7 +277,7 @@ in
|
|||||||
seccomp = true;
|
seccomp = true;
|
||||||
|
|
||||||
try_socket = "/tmp/.X11-unix/X0";
|
try_socket = "/tmp/.X11-unix/X0";
|
||||||
socket_abstract = false;
|
socket_abstract = true;
|
||||||
socket_pathname = true;
|
socket_pathname = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ silent_output_interrupt("--wayland -X --dbus --pulse ")
|
|||||||
print(machine.fail("sudo -u alice -i hakurei -v run --wayland true"))
|
print(machine.fail("sudo -u alice -i hakurei -v run --wayland true"))
|
||||||
|
|
||||||
# Start hakurei permissive defaults within Wayland session:
|
# Start hakurei permissive defaults within Wayland session:
|
||||||
hakurei('-v run --wayland --dbus notify-send -a "NixOS Tests" "Test notification" "Notification from within sandbox." && touch /tmp/dbus-ok')
|
hakurei('-v run --wayland --dbus --dbus-log notify-send -a "NixOS Tests" "Test notification" "Notification from within sandbox." && touch /tmp/dbus-ok')
|
||||||
machine.wait_for_file("/tmp/dbus-ok", timeout=15)
|
machine.wait_for_file("/tmp/dbus-ok", timeout=15)
|
||||||
collect_state_ui("dbus_notify_exited")
|
collect_state_ui("dbus_notify_exited")
|
||||||
# not in pid namespace, verify termination
|
# not in pid namespace, verify termination
|
||||||
|
|||||||
Reference in New Issue
Block a user