콘텐츠가 포함된 심볼릭 링크 디렉터리

콘텐츠가 포함된 심볼릭 링크 디렉터리

그래서 /usr파일 'ro'시스템(변경할 수 없음, 작업 규칙 및 보안)이 있고 또 다른 디렉토리가 /bigdata있습니다 'rw'.

일부 서비스를 설치 중인데 이를 작성해야 하므로 /usr/foo해당 서비스에 심볼릭 링크할 수 있다고 생각했습니다 /bigdata. 문제는 다른 파일도 있다는 것입니다 /usr/foo.

foo의 모든 내용을 복사하지 않는 해결 방법이 있습니까 bigdata?

감사해요!

답변1

한 가지 아이디어는 다시 작성하는 것이지만 /usr/foo오작동하는 애플리케이션에만 해당됩니다. 오작동하는 응용 프로그램은 /usr/foo별칭 으로 처리되지만 시스템의 다른 모든 프로세스 에서는 실제로 해당 응용 프로그램에 있는 파일을 포함하여 실제 콘텐츠를 /bigdata계속 볼 수 있습니다 . 이는 오작동하는 애플리케이션이 액세스할 수 없는 일반 콘텐츠 /usr/foo에 관심이 없다고 가정합니다 ./usr/foo

sudo unshare --mount sh -c 'mount --make-rprivate / &&
    mount -n --bind /bigdata /usr/foo &&
    exec su "$SUDO_USER" -c misbehaving_application'

(테스트됨)

그렇지 않으면,파일 시스템 덮어쓰기의견에서 제안한 대로 문제가 해결될 수 있습니다.

마지막으로 최후의 수단으로 일부 기호 연결 연습을 통해 이 문제를 해결할 수 있습니다. 아이디어는 다음과 같습니다.

  • /usr/foo복사본을 다른 곳에 바인드 마운트

    mkdir /writable/place/foo
    mount --bind /usr/foo /writable/place/foo
    
  • /usr/foo대체 디렉터리로 압축

    mount --bind /bigdata /usr/foo
    
  • /usr/foo에서 액세스할 수 있도록 기존 파일을 심볼릭 링크합니다.

    for x in /writable/place/foo/*; do
      ln -s "$x" /usr/foo
    done
    

(검증되지 않은)

관련 정보