Você poderia explicar a criação do diretório "chroot" / tmp?

4

No artigo relacionado a seguir, eles explicam como criar um diretório "chroot" / tmp. Estou um pouco confuso com o que eles fizeram. Alguém poderia explicar o que os seguintes comandos estão fazendo?

Solução de problemas do Noexec e / tmp

1. # mkdir -p /root/chroot /root/tmp 
2. # mount --bind / /root/chroot 
3. # mount --bind /root/tmp /root/chroot/tmp
4. # chroot /root/chroot

Na primeira etapa, por que eles criaram / root / tmp e não / root / chroot / tmp ?

O primeiro comando de montagem afeta o segundo? Na segunda etapa, eles estão ligando o novo diretório / root / chroot ao diretório raiz. Isso significa que, na terceira etapa, o / root / tmp aponta para / root / chroot / root / tmp ? De onde vem o / root / chroot / tmp ? Essa é a parte que estou ficando confusa.

Qual é a lógica por trás disso?

    
por fromvega 29.08.2014 / 21:48

2 respostas

2

Na etapa 2, vincule o / montado no /root/chroot .

Se você criar a etapa 2.5 como ls /root/chroot , encontrará todos os diretórios de / listados; incluindo o diretório /tmp do sistema.

Se você touch /root/chroot/test , verá que test também está na saída de ls / . Se você rm /test perceberá que também desapareceu de /root/chroot/ . Portanto, / e /root/chroot/ são exatamente o mesmo lugar.

Se quiser examinar um pouco mais detalhadamente, execute stat / e, em seguida, stat /root/chroot , e você perceberá que ambos retornam o mesmo Inode . Um Inode é uma estrutura de dados que se refere a um determinado arquivo / diretório no disco. Como ambos retornam o mesmo Inode , ambos os caminhos estão apontando exatamente para o mesmo diretório.

O passo 3, por conseguinte, liga monta o diretório /root/tmp sobre o diretório /tmp do sistema dentro da já montada /root/chroot .

Quando você chroot na etapa 4, você estará em um / de chroot usando o diretório /tmp em /root em vez do /tmp em todo o sistema. Desta forma, o chroot não está compartilhando um /tmp com todos os outros usuários no sistema.

    
por 29.08.2014 / 22:27
3
mkdir -p /root/chroot /root/tmp

Crie diretórios para serem usados no ambiente chroot'ed. /root/chroot será o diretório raiz do seu ambiente chroot'ed. /root/tmp agirá como um diretório /tmp do seu ambiente chroot'ed.

mount --bind / /root/chroot

Isso tornará seu diretório / acessível via /root/chroot . Pense nisso como espelhamento do diretório / em /root/chroot (mesmo que não seja realmente um espelho, é um ponteiro para / ).

mount --bind /root/tmp /root/chroot/tmp

Isso tornará seu diretório /root/tmp personalizado acessível através de um diretório /tmp do seu ambiente chroot'ed. Desta forma, seu ambiente chroot'ed terá seu diretório /tmp separado do /tmp do sistema. Se você pular esta etapa, o diretório chroot'ed /tmp apontará para o diretório /tmp do seu sistema.

chroot /root/chroot

Aqui você insere seu ambiente chroot'ed.

Agora, suas perguntas:

  1. O primeiro comando de montagem afeta o segundo?

    Sim. Você precisa ligar a raiz do seu ambiente chroot ( /root/chroot ), antes de poder vincular seu diretório /tmp . /root/chroot/tmp não existirá antes de você ligar / a /root/chroot .

  2. Na segunda etapa, eles estão ligando o novo diretório /root/chroot ao diretório raiz. Isso significa que, na terceira etapa, /root/tmp realmente aponta para /root/chroot/root/tmp ?

    Sim. Tudo em / estará acessível via /root/chroot .

  3. De onde vem /root/chroot/tmp ?

    /root/chroot/tmp passa a existir depois que você liga / a /root/chroot na etapa 2.

por 29.08.2014 / 22:25