Verifique se o serviço do sandbox está em execução.
systemctl status sandbox.service
Se sim, desligue-o, reinicie e tente novamente. Isso funcionou para mim.
Eu me deparei com um problema estranho em relação aos namespaces de montagem no Linux. Eu tenho dois sistemas, ambos executando o kernel 3.2.3-2 sob o Fedora 16. Eu estou tentando montar um sistema de arquivos tmpfs
em um namespace filho criado usando o comando unshare
:
unshare -m /bin/bash
Da página do manual:
mount namespace
mounting and unmounting filesystems will not affect rest of the
system (CLONE_NEWNS flag),
Em um sistema, isso funciona como esperado. Isto é, se eu começar com isso:
# ls /mnt
file1 file2 file3
Em seguida, monte um sistema de arquivos tmpfs
sobre /mnt
em um namespace filho:
# PS1="child# ' unshare -m /bin/bash
child# mount -t tmpfs tmpfs /mnt
O conteúdo de /mnt
está mascarado no namespace filho:
child# ls /mnt
child#
Mas continue visível no pai:
# ls /mnt
file1 file2 file3
No segundo sistema, a mesma sequência exata de comandos resultará em uma montagem visível no namespace pai e no namespace filho. Em outras palavras, parece que o comando unshare
não está realmente resultando em um namespace de montagem separado.
Não tenho conhecimento de diferenças substanciais entre os dois sistemas. Um está executando um ambiente de desktop, o outro não é. O SELinux está desativado em ambos os sistemas.
Estou procurando sugestões sobre o que poderia estar causando essa diferença de comportamento.
@John recebeu a resposta, mas eu queria fornecer aqui alguma documentação adicional para refletir por que o comportamento dos dois sistemas era diferente.
O script sandbox
( /etc/rc.d/init.d/sandbox
) definiu recursivamente o sinalizador shared
em todas as montagens no sistema executando:
mount --make-rshared /
Os comentários no script sandbox
são:
description: sandbox, xguest and other apps that want to use pam_namespace require this script be run at boot. This service script does not actually run any service but sets up: / to be shared by any app that starts a separate namespace If you do not use sandbox, xguest or pam_namespace you can turn this service off.
Como as ferramentas aqui referenciadas são todas aplicações GUI, o script sandbox
só está habilitado para o nível de execução 5. Dos dois sistemas que estou trabalhando, um é um desktop - portanto, ele inicia no nível de execução 5 e obtém o sandbox
script por padrão - enquanto o outro é um servidor headless que inicializa no nível de execução 3.
Eu tenho visto o mesmo problema. Tente um
mount --make-private /mnt
antes do
mount -t tmpfs tmpfs /mnt
Veja também a fonte do comando seunshare para ver como eles o fazem.