Gostaria de saber o que significa exatamente o recurso "Suporte a namespaces" no kernel do Linux. Estou usando o kernel 3.11.1 (o kernel estável mais novo no momento).
Se eu decidir desativá-lo, notarei alguma alteração no meu sistema?
E caso alguém decida fazer uso de namespaces, basta compilar NAMESPACES=Y
no kernel ou ele também precisa de ferramentas de espaço de usuário?
linux
linux-kernel
namespace
Martin Vegter
fonte
fonte
Respostas:
Em poucas palavras, os namespaces fornecem uma maneira de construir um sistema Linux virtual dentro de um sistema Linux maior. Isso é diferente de executar uma máquina virtual que é executada como um processo sem privilégios: a máquina virtual aparece como um processo único no host, enquanto os processos executados dentro de um espaço para nome ainda estão em execução no sistema host.
Um sistema virtual em execução em um sistema maior é chamado de contêiner . A idéia de um contêiner é que os processos em execução dentro do contêiner acreditam que eles são os únicos processos no sistema. Em particular, o usuário root dentro do contêiner não possui privilégios de root fora do contêiner (observe que isso só é verdade em versões recentes o suficiente do kernel).
Os espaços para nome virtualizam um recurso por vez. Alguns exemplos de tipos de namespaces são:
Desde o kernel Linux 3.8, usuários sem privilégios podem criar namespaces de usuário. Isso permite que um usuário comum utilize recursos reservados à raiz (como alterar tabelas de roteamento ou definir recursos).
Os espaços para nome dependem do kernel para fornecer isolamento entre os espaços para nome. Isso é bastante complicado de acertar, portanto ainda pode haver erros de segurança. O risco de erros de segurança seria o principal motivo para não ativar o recurso. Outro motivo para não habilitá-lo seria quando você estiver criando um pequeno kernel para um dispositivo incorporado. Em um kernel de uso geral que você instalaria em um servidor ou estação de trabalho típico, os namespaces devem ser ativados, como qualquer outro recurso maduro do kernel.
Ainda existem poucos aplicativos que usam espaços para nome. Aqui estão alguns:
Veja a série de artigos LWN de Michael Kerrisk para obter mais informações.
fonte
O espaço para nome do kernel do Linux é um conceito usado para isolar um grupo de processos de outros com relação ao acesso a um recurso do sistema. Por exemplo, dois namespaces de PID diferentes podem conter processos com PIDs idênticos, mas imagem de processo completamente diferente. Eles são frequentemente usados na virtualização no nível do SO, na qual um único kernel executa simultaneamente vários sistemas operacionais - todos precisam ser baseados no Linux (porque compartilham o kernel, obviamente), mas podem ter distribuições e versões diferentes. Veja, por exemplo, LXC .
Você pode desabilitá-lo, por exemplo, em sistemas baseados em systemd, pois o systemd pode usar espaços de nome para seu recurso de contêiner . Portanto, depende muito de qual distribuição você está usando e o que você pretende fazer com o sistema.
Como em quase todos os recursos do kernel, você definitivamente precisa de algum tipo de programa de espaço para o usuário - mesmo que tenha conversado com o kernel por meio de arquivos especiais (não sei se é possível), geralmente é uma idéia muito melhor confiar em ferramentas especializadas, pois elas oferecer API amigável.
fonte
Para dar um exemplo de uso do espaço para nome, nos sistemas habilitados para SELinux (MLS ou Strict). O espaço para nome é normalmente usado para criar diretórios individuais
/tmp
e / ou/home
para cada usuário. Esses diretórios são visíveis apenas para: usuário, usuários com o mesmo rótulo, kernel e usuários com acesso privilegiado. O/tmp
diretório ed do namespace é rotulado pelo SELinux-MLS para corresponder ao rótulo do usuário SELinux-MLS. Nesse cenário, o/tmp
diretório que o usuário vê pode realmente ser montado em outro lugar que não/tmp
(/var/user-tmp
). O usuário, no entanto, vê apenas/tmp
com os arquivos criados devido à atividade do usuário. o usuário nunca verá nenhum arquivo/tmp
que seja produto de outros usuários.fonte