A explicação está na mount.fuse
man page :
Filesystems are mounted with
nodev,nosuid
by default, which can only be overridden by a privileged user
Com a opção nodev
, o kernel bane todo o acesso aos dispositivos no sistema de arquivos montado. Com a opção nosuid
, o kernel ignora os atributos setuid e setgid. Ambas as opções são necessárias para a segurança quando um sistema de arquivos é montado por um usuário não-root: caso contrário, o usuário de montagem pode criar um shell raiz setuid ou dispositivos permitindo que ele acesse todos os discos ignorando o sistema de arquivos.
Você também desejará a opção allow_other
se usuários não-root acessarem esse sistema de arquivos.
unionfs-fuse -o cow,dev,suid,allow_other /chroot/files=RW:/chroot/persistent/:/ /chroot/chroot/
Se você quiser restringir quais dispositivos estão visíveis no chroot, uma montagem de união não é a maneira de fazer isso. Em vez disso, deixe dev
off e monte um sistema de arquivos separado contendo o /dev
mínimo desejado. Você pode fazer isso um tmpfs:
unionfs-fuse -o cow,suid,allow_other /chroot/files=RW:/chroot/persistent/:/ /chroot/chroot/
mount -t tmpfs -o mode=755 chroot-dev /chroot/chroot/dev
cp -a /dev/null /dev/zero /dev/urandom /chroot/chroot/dev
mkdir /chroot/chroot/dev/pts
mount --bind /dev/pts /chroot/chroot/dev/pts
Em vez de um tmpfs, você pode montar um diretório contendo seus dispositivos prontos para serem ligados. Você precisará vincular-montar /dev/pts
para obter pseudoterminals no chroot.