나는 docker를 사용하여 Linux chroot의 압축을 풀고 그 안에 있는 명령을 실행하지만 chroot 내부에서 이를 얻습니다.
echo ciao > /dev/null
bash: /dev/null: Permission denied
null 장치가 손상된 것 같다고 생각하여 다른 것을 시도했습니다.
rm -f /dev/null ; mknod -m 0666 /dev/null c 1 3; echo ciao > /dev/null
bash: /dev/null: Permission denied
그러나 그것도 작동하지 않았습니다.
stat
main 작업 /dev/null
과 chroot 내의 작업 간에는 차이가 없습니다.
제가 이 문제에 관해 글을 쓴 첫 번째 사람인 것 같아서 이 글을 쓰게 되었습니다.
답변1
속도상의 이유로 내 chroot는 tmpfs에서 추출되어 --tmpfs /tmpfs:exec
docker에 마운트됩니다.
내 마운트는 다음과 같습니다
tmpfs on /tmpfs type tmpfs (rw,nosuid,nodev,relatime)`
exec
docker가 tmpfs 설치에 추가한 기본값을 재정의해야 했던 방법과 유사하게 재정의 해야 하는 패스가 noexec
있었습니다 .nodev
따라서 매개변수는 다음과 같습니다.
--tmpfs /tmpfs:exec,dev
짜증나는 부분은 mknod
실패하거나 오류를 보고하지 않는다는 것입니다. 장치 파일이 생성되었지만 실행할 수 없습니다.