fstab을 사용하여 chroot 감옥의 디렉터리를 올바르게 바인딩하는 방법은 무엇입니까?

fstab을 사용하여 chroot 감옥의 디렉터리를 올바르게 바인딩하는 방법은 무엇입니까?

저는 Debian Wheezy에서 nginx, PHP-FPM, MySQL을 실행하고 있습니다. debootstrapNET의 각 개별 가상 호스트에 대해 chroot Jail(사용)을 설정 했습니다 /srv/. 모든 것이 예상대로 작동하지만 재부팅할 때마다 수동 mount --bind /proc /srv/chrootjail/proc으로 mount --bind /run/mysqld /srv/chrootjail/run/mysqld.

그래서 다음 줄을 추가했습니다 /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올바르게 설치되었지만 /srv/chrootjail/run/mysqld작동하지 않습니다.아니요이유를 찾을 수 없습니다. /srv/chrootjail/run/mysqld그러나 문제는 해결되었습니다 /run/mysqld. mount -a분명한 이유로 이것은 내가 바라던 해결책이 아닙니다.

내가 여기서 뭘 잘못하고 있는지 아는 사람이 있나요?

답변1

실제로 무슨 일이 일어나고 있는지에 대한 나의 지식은 매우 제한적이지만 특히 이 문제에 직면 mount --bind한 이유를 알아낸 것 같습니다 . /run/mysqld방금 알아차렸어/run(이전의 /var/run)는 tmpfs였습니다.따라서 재부팅하는 동안 지워집니다. 그래서 제 추측으로는 /run/mysqld파싱할 때 존재하지 않는 것 같아요. /etc/fstabinit 스크립트는 /etc/init.d/mysql이를 확인하고 필요한 경우 생성합니다./run/mysqld

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

해결 방법으로 mount -a해당 줄 뒤에 하나를 추가했습니다. 어디든 만들 수 있을 것 같지만(?) 내부에 /run(또는 ) /var/runmysqld 폴더를 만듭니다 . 하지만, 아무도 말해주지 않는다면더 나은 것그렇게 하려면 이 해결 방법을 고수하겠습니다. 시간 내 주셔서 감사합니다!

관련 정보