Eu estava verificando o unshare
comando e, de acordo com a página de manual,
unshare - run program with some namespaces unshared from parent
Também vejo que há um tipo de namespace listado como,
mount namespace
mounting and unmounting filesystems will not affect rest of the system.
Qual é exatamente o propósito deste espaço para nome de montagem ? Estou tentando entender esse conceito com a ajuda de algum exemplo.
Respostas:
A execução
unshare -m
fornece ao processo de chamada uma cópia privada de seu namespace de montagem e também remove o compartilhamento de atributos do sistema de arquivos, para que ele não compartilhe mais seus atributos de diretório raiz, diretório atual ou umask com qualquer outro processo.Então, o que diz o parágrafo acima? Vamos tentar entender usando um exemplo simples.
Terminal 1:
Eu faço os comandos abaixo no primeiro terminal.
O último comando me dá a saída como,
tmpfs /tmp/tmp.7KtrAsd9lx tmpfs rw,relatime,size=1024k 0 0
Agora, eu fiz os seguintes comandos também.
A saída do
ls
comando é,Então, qual é o grande problema em fazer tudo isso? Por que eu deveria fazer isso?
Abro outro terminal agora ( terminal 2 ) e faço os comandos abaixo.
A saída é a seguinte.
Os arquivos
hello
ehelloagain
não estão visíveis e eu até fiz login como root para verificar esses arquivos. Portanto, a vantagem é que esse recurso nos permite criar um sistema de arquivos temporário privado que mesmo outros processos de propriedade raiz não podem ver ou navegar.Na página de manual de
unshare
,A memória que está sendo utilizada para o namespace é o VFS, que é do kernel. E - se o configurarmos em primeiro lugar - podemos criar ambientes virtuais inteiros nos quais somos o usuário root sem permissões de root.
Referências:
O exemplo é estruturado usando os detalhes desta postagem do blog . Além disso, as citações desta resposta são desta maravilhosa explicação de Mike . Outra leitura maravilhosa sobre isso pode ser encontrada na resposta aqui .
fonte
this feature makes it possible for us to create a private temporary filesystem that even other root-owned processes cannot see or browse through.
E em comparação comchroot
, oschroot
arquivos são visíveis para os outros. Isso é incrível, e essa frase provavelmente deve estar no topo da resposta. + 1ed.nsenter
você pode inserir o espaço para nome e visualizar os arquivos temporários. Supondo que apenas um unshare (a uma possuir a tempdir), em seguida,sudo nsenter -t $(pgrep -P $(ps aux | grep unshare | grep -v grep | awk '{print $2}')) -m -p
vai permitir que o conteúdo a ser visualizadoSe você tiver o bubblewrap instalado no seu sistema, poderá fazê-lo facilmente em uma etapa:
No exemplo acima, o bash interno terá sua própria visualização em / tmp.
Solução inspirada na resposta da @ Ramesh-s - obrigado por isso!
fonte