mkdir /home/user/test
lxc config device add ctest mydisk disk source=/home/user/test path=/mnt/test shift=true readonly=true
lxc shell ctest
root@ctest:/mnt/test# findmnt
TARGET SOURCE FSTYPE OPTIONS
/ /var/lib/lxd/storage-pools/zfs/containers/ctest/rootfs
│ shiftfs rw,relatime,passthrough=3
├─/run tmpfs tmpfs rw,nosuid,nodev,size=802760k,mode=755,uid=
│ ├─/run/lock tmpfs tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k
│ └─/run/user/0 tmpfs tmpfs rw,nosuid,nodev,relatime,size=802756k,mode
├─/dev none tmpfs rw,relatime,size=492k,mode=755,uid=1000000
│ ├─/dev/shm tmpfs tmpfs rw,nosuid,nodev,uid=1000000,gid=1000000
│ ├─/dev/fuse udev[/fuse] devtmpfs rw,nosuid,noexec,relatime,size=3981636k,nr
│ ├─/dev/net/tun udev[/net/tun] devtmpfs rw,nosuid,noexec,relatime,size=3981636k,nr
│ ├─/dev/pts devpts devpts rw,nosuid,noexec,relatime,gid=1000005,mode
│ ├─/dev/mqueue mqueue mqueue rw,nosuid,nodev,noexec,relatime
│ ├─/dev/lxd tmpfs tmpfs rw,relatime,size=100k,mode=755
│ ├─/dev/.lxd-mounts tmpfs[/ctest] tmpfs rw,relatime,size=100k,mode=711
│ ├─/dev/full udev[/full] devtmpfs rw,nosuid,noexec,relatime,size=3981636k,nr
│ ├─/dev/null udev[/null] devtmpfs rw,nosuid,noexec,relatime,size=3981636k,nr
│ ├─/dev/random udev[/random] devtmpfs rw,nosuid,noexec,relatime,size=3981636k,nr
│ ├─/dev/tty udev[/tty] devtmpfs rw,nosuid,noexec,relatime,size=3981636k,nr
│ ├─/dev/urandom udev[/urandom] devtmpfs rw,nosuid,noexec,relatime,size=3981636k,nr
│ ├─/dev/zero udev[/zero] devtmpfs rw,nosuid,noexec,relatime,size=3981636k,nr
│ ├─/dev/console devpts[/3] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,p
│ └─/dev/ptmx devpts[/ptmx] devpts rw,nosuid,noexec,relatime,gid=1000005,mode
├─/proc proc proc rw,nosuid,nodev,noexec,relatime
│ ├─/proc/sys/kernel/random/boot_id none[/.lxc-boot-id]
│ │ tmpfs ro,nosuid,nodev,noexec,relatime,size=492k,
│ └─/proc/sys/fs/binfmt_misc binfmt_misc binfmt_mi rw,nosuid,nodev,noexec,relatime
├─/sys sysfs sysfs rw,relatime
│ ├─/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,mode=755,uid=100000
│ │ ├─/sys/fs/cgroup/unified cgroup2 cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate
│ │ ├─/sys/fs/cgroup/systemd cgroup cgroup rw,nosuid,nodev,noexec,relatime,xattr,name
│ │ ├─/sys/fs/cgroup/pids cgroup cgroup rw,nosuid,nodev,noexec,relatime,pids
│ │ ├─/sys/fs/cgroup/cpu,cpuacct cgroup cgroup rw,nosuid,nodev,noexec,relatime,cpu,cpuacc
│ │ ├─/sys/fs/cgroup/devices cgroup cgroup rw,nosuid,nodev,noexec,relatime,devices
│ │ ├─/sys/fs/cgroup/blkio cgroup cgroup rw,nosuid,nodev,noexec,relatime,blkio
│ │ ├─/sys/fs/cgroup/freezer cgroup cgroup rw,nosuid,nodev,noexec,relatime,freezer
│ │ ├─/sys/fs/cgroup/net_cls,net_prio cgroup cgroup rw,nosuid,nodev,noexec,relatime,net_cls,ne
│ │ ├─/sys/fs/cgroup/cpuset cgroup cgroup rw,nosuid,nodev,noexec,relatime,cpuset
│ │ ├─/sys/fs/cgroup/memory cgroup cgroup rw,nosuid,nodev,noexec,relatime,memory
│ │ ├─/sys/fs/cgroup/rdma cgroup cgroup rw,nosuid,nodev,noexec,relatime,rdma
│ │ ├─/sys/fs/cgroup/hugetlb cgroup cgroup rw,nosuid,nodev,noexec,relatime,hugetlb
│ │ └─/sys/fs/cgroup/perf_event cgroup cgroup rw,nosuid,nodev,noexec,relatime,perf_event
│ ├─/sys/firmware/efi/efivars efivarfs efivarfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/fuse/connections fusectl fusectl rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/pstore pstore pstore rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/config configfs configfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/debug debugfs debugfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/security securityfs securityf rw,nosuid,nodev,noexec,relatime
│ └─/sys/kernel/tracing tracefs tracefs rw,nosuid,nodev,noexec,relatime
└─/mnt/test /dev/.lxd-mounts/lxdmount_369224129
shiftfs rw,relatime,passthrough=3
Looks like the mount is still rw in the container.
Also I would like to clarify that with shift=true and readonly=true it appears that I can create, rename and delete files, but I cannot actually edit the contents.
touch /mnt/test/hello.txt
ls -la /mnt/test/
total 5
drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 17 10:03 .
drwxr-xr-x 3 root root 3 Feb 17 09:56 ..
-rw-r--r-- 1 root root 0 Feb 17 10:03 hello.txt
echo "hello" > /mnt/test/hello.txt
-bash: /mnt/test/hello.txt: Read-only file system
And on the host directory:
user@user-MS-7821:~$ ls -la /home/user/test/
total 8
drwxrwxr-x 2 user user 4096 Feb 17 10:03 .
drwxr-xr-x 31 user user 4096 Feb 17 09:56 ..
-rw-r--r-- 1 root root 0 Feb 17 10:03 hello.txt