Chroot ou diretório desassociado do Linux?

1

Seria possível fazer chroot ou criar um diretório desvinculado (no sistema de arquivos raiz principal)? Pelo que entendi, o kernel exclui automaticamente qualquer arquivo / pasta que não tenha link no sistema de arquivos, mas existe uma maneira de ter uma segunda raiz?

    
por JavaProphet 24.07.2015 / 07:46

1 resposta

0

Sim, e possivelmente você já tem vários deles. Lembre-se de que você pode ter vários sistemas de arquivos independentes montados em vários lugares - e cada um deles tem sua própria "raiz".

Por exemplo, se uma partição de "dados" separada for montada em /mnt/data , esse diretório será, na verdade, uma raiz do sistema de arquivos, sem .. que apontasse acima dela. (O mesmo se aplica também a sistemas de arquivos internos como / sys ou / dev.)

No Linux, a camada VFS - "sistema de arquivos virtual" - faz isso funcionar. Ele permite que o root 1 seja acessível em / e raiz 2 em /mnt/data e cria a ilusão de /mnt/data/.. vinculando a /mnt .

(Novamente no Linux, o VFS tem alguns outros recursos interessantes normalmente usados para / . Por exemplo, quando o kernel é iniciado, / é anexado a um sistema de arquivos "tmpfs" vazio, onde o initramfs é descompactado. Eventualmente, o sistema de arquivos raiz principal é montado em algum lugar em /new_root ou algo assim, e movido para / usando o especial pivot_root ou o mais geral mount --move . Já mencionei chroot .

Em outras palavras, o diretório raiz VFS não necessariamente é nascido assim.

É possível ter várias raízes VFS de uma só vez - não apenas por chroot, mas também usando namespaces de montagem, onde diferentes processos podem ver montagens diferentes de VFS; isso é usado por 'containers' como o Docker.)

No entanto, não é verdade que a raiz do sistema de arquivos não tenha links. Ele só não tem links de acima , mas pode facilmente ter links de abaixo - em subdiretórios regulares (como / bin) o .. é um link real, então / teria links de /bin/.. , /etc/.. e assim por diante.

(Curiosamente, é por isso que você pode renomear diretórios somente leitura, mas não movê-los para outro lugar, porque o último exigiria que seja escrito no diretório para atualizar seu link .. .)

    
por 24.07.2015 / 08:08