Monte o dispositivo como RW para raiz e RO para todos os outros

0

Eu tenho um dispositivo que eu quero montar para root com permissões completas e para todos os outros como somente leitura. A man page me diz que isso é possível.

Então:

  • sudo mkdir /mnt/foo
  • sudo mkdir /mnt/fooReadOnly
  • sudo chmod 700 /mnt/foo (rw apenas para raiz)
  • sudo chmod 555 /mnt/fooReadOnly (ro / procurar por todos)
  • verifique se o dispositivo /dev/sdaX está montado como /mnt/foo

Então fiz o que a página de manual sugeria:

  • sudo mount --bind /mnt/foo /mnt/fooReadOnly
  • sudo mount -o remount,bind,ro /mnt/foo /mnt/fooReadOnly

Agora, teste:

  • ls /mnt/foo - > Permission denied ... CORRETO
  • sudo ls /mnt/foo funciona .. CORRETO
  • ls /mnt/fooReadOnly - > Permission denied ... INCORRECT?

Não consigo alterar nada nessa montagem de bind, isso me diz Read-only file system .

Como corrijo isso?

Além disso, como adiciono isso a /etc/fstab para que ele seja automaticamente remontado na inicialização?

    
por lonix 16.05.2018 / 18:43

1 resposta

0

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 modo ls -ld /root e o proprietário dr-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
    
por 16.05.2018 / 21:01