I have a device I want to mount for root with full permissions and for everyone else as readonly.
-
sudo mkdir /root/mnt/foo
-
sudo mkdir /mnt/fooReadOnly
-
%código%
- Isso garante que o dispositivo / dev / sdaX seja montado somente leitura em / mnt / foo. Eu configuro isso primeiro, porque não é possível criar uma montagem de ligação somente leitura em uma única etapa. Não quero permitir que os usuários acessem uma montagem de ligação de leitura / gravação, mesmo que por um instante.
-
mount -oro /dev/sdaX /mnt/foo
- verifique duas vezes se o modols -ld /root
e o proprietáriodr-xr-x---
. -
root root
-
sudo mount --bind /mnt/fooReadOnly /root/mnt/foo
Experimente os comandos acima. Após cada comando de montagem, você pode executar sudo mount -oremount,rw /root/mnt/foo
, que mostra os sinalizadores por sistema de arquivos e por ponto de montagem em colunas separadas.
Para entender isso, saiba que grep foo /proc/self/mountinfo
(ou mount -oremount,rw
) altera o sinalizador por sistema de arquivos e o sinalizador por ponto de montagem ao mesmo tempo. Mas isso não afeta o sinalizador por ponto de montagem dos outros ponto (s) de montagem.
Não é possível testar os comandos acima dentro de um namespace de usuário ( mount -oremount,ro
), mesmo se você mudar para a montagem de um tmpfs em vez de sdaX. Ele falha com "permissão negada" em unshare -rm
. Em vez disso, você teria que usar a seguinte sequência:
-
mount -oremount,rw
-
mount tmp -ttmpfs /root/mnt/foo
-
mount --bind /root/mnt/foo /root/mnt/fooReadOnly
-
mount -oremount,bind,ro /root/mnt/fooReadOnly
Also, how do I add this to /etc/fstab so that it will automatically remount on boot?
Eu recomendaria não adaptar a primeira seqüência ao fstab, porque é muito de um hack. Você pode adaptar a segunda ordem.
/dev/sdaX /root/mnt/foo ...
/root/mnt/foo /root/mnt/fooReadOnly none bind,ro
/root/fooReadOnly /mnt/fooReadOnly none bind