I've created a systemd-nspawn container in which /dev/fb1 from the host is bound as /dev/fb0. I've set PrivateUsers=off in the .nspawn config file, and the file ownership and permissions of /dev/fb0 in the container appear to be the same as /dev/fb1 on the host. Running cat /dev/urandom >/dev/fb1 on the host works as expected ('no space left on device' error), but if I boot the container, and log in to it as root (with machinectl) cat /dev/urandom >/dev/fb0 fails with 'Operation not permitted'. I also tried to write to it using dd -if /dev/urandom -of /dev/fb0, and that gave the error 'dd: failed to open '/dev/fb0': Operation not permitted'. I've tested other commands that would require root access, such as chmod and chown, and my root user in the container is able to run those.
If I bind /dev/fb1 as itself (i.e. just Bind=/dev/fb1), then the write operation is permitted.
Does anyone know why I can't open the file for writes from within the container?
This is the .nspawn config:
[Exec] Capability=CAP_SYS_ADMIN PrivateUsers=off [Files] Bind=/dev/fb1:/dev/fb0 Bind=/srv This is the systemd-nspawn service override file for the container:
[Service] DeviceAllow=/dev/fb0 rw DeviceAllow=char-input rw DeviceAllow=char-drm rw (I'm sure some of this config is unnecessary -- I've just been chucking in everything I can think of to solve my problem.)