Como faço para vincular diretórios dentro de jacks chroot usando fstab?

1

Eu estou rodando nginx, PHP-FPM e MySQL no Debian Wheezy. Eu configurei chroot jails (com debootstrap ) para cada host virtual individual em /srv/ . Tudo está funcionando como seria de esperar, mas após cada reinicialização eu tive que manualmente mount --bind /proc /srv/chrootjail/proc e mount --bind /run/mysqld /srv/chrootjail/run/mysqld .

É por isso que adicionei as seguintes linhas a /etc/fstab :

/proc       /srv/chrootjail/proc       none rw,bind 0 0
/run/mysqld /srv/chrootjail/run/mysqld none rw,bind 0 0

/srv/chrootjail/proc é montado corretamente, mas /srv/chrootjail/run/mysqld não não e não consigo encontrar o motivo. /srv/chrootjail/run/mysqld apenas permanece vazio, embora existam arquivos em /run/mysqld . No entanto, mount -a corrige o problema. Por razões óbvias, esta não é a solução que eu esperava.

Alguém vê o que estou fazendo errado aqui?

    
por Oliver M. 09.11.2014 / 05:19

1 resposta

1

Eu tenho um conhecimento muito limitado sobre o que o mount --bind realmente faz, mas acho que eu poderia ter descoberto por que estou enfrentando esse problema com /run/mysqld em particular. Acabei de notar que /run (anteriormente /var/run ) é um tmpfs e, portanto, é esvaziado durante a reinicialização. Então, meu palpite é que /run/mysqld não existe quando /etc/fstab é analisado. É o script de inicialização /etc/init.d/mysql que verifica /run/mysqld e o cria, se necessário, com esta linha:

# Could be removed during boot
test -e /run/mysqld || install -m 755 -o mysql -g root -d /run/mysqld

Como solução, simplesmente adicionei um mount -a após essa linha. Eu acho que poderia apenas criar a pasta mysqld em qualquer lugar (?), Mas também dentro de /run (ou /var/run ). No entanto, se ninguém puder me dizer uma maneira melhor de fazê-lo, vou me ater a essa solução alternativa. Obrigado pelo seu tempo!

    
por 09.11.2014 / 17:58