루트 없이 로컬 디렉토리를 마운트하는 방법

루트 없이 로컬 디렉토리를 마운트하는 방법

사용자가 완전히 읽을 수 있는 폴더가 있다고 가정해 보겠습니다. 내 홈 폴더에 설치하고 싶습니다. 나는 파일이 공개되기를 원 ~/하고 다른 프로그램이 그것이 마운트라는 것을 "알지" 않기를 원하기 때문에 심볼릭 링크를 사용할 수 없습니다 . 이 기능을 수행할 수 있는 퓨즈 프로그램이 있습니까? 문제 mount는 루트 액세스가 필요하다는 것입니다.

또한 부팅 시가 아니라 필요할 때 이 디렉터리를 마운트할 수 있다면 감사하겠습니다. ~/로그인하지 않으면 내 디렉터리가 암호화되기 때문입니다.

답변1

다양한 FUSE 유틸리티가 이를 수행할 수 있습니다. 예를 들어,파일 시스템 바인딩mount --bind디렉토리는 이전 과 유사하게 다른 위치에 마운트될 수 있습니다 .

bindfs --no-allow-other /source/directory /mount/point

이 옵션은 주석 처리를 제거하지 않는 한 필수입니다 --no-allow-other(그러나 보안 관련 내용은 아래 libfuse에 대한 참고 사항 참조).user_allow_other/etc/fuse.conf

제거:

fusermount -u /mount/point

FUSE 파일 시스템에는 현재 알려진 문제/제한 사항이 있습니다. 성능 비용, 사용 불가능성 등을 언급할 가치가 있습니다.inotify소스 파일 시스템에서 발생하는 파일 시스템 이벤트와 다음에 나열된 보안 위험을 모니터링합니다.libfuse GitHub 저장소읽어보기 파일.

리눅스에서는바인드 마운트실행에는 mount --bind이러한 단점이 발생하지 않습니다. 하지만 내용을 편집하려면 적어도 한 번은 루트 액세스가 필요합니다 fstab.
링크된 Q/A를 참조하세요.많은이 주제를 더 자세히 다룹니다.

답변2

다음 항목을 사용하여 /etc/fstab을 한 번 설정할 수 있습니다.

/path/to/original/dir  /path/to/bind/dir  none  bind,rw,user,noauto  0 0 

마운트 옵션은 다음을 순서대로 지정합니다.

  • bind항목이 바인드 마운트임을 나타냅니다.
  • rw항목이 읽기-쓰기 모드로 마운트되도록 지정합니다.
  • user루트가 아닌 사용자가 파일 시스템을 마운트하도록 허용합니다.
  • noautomount -a이 항목이 부팅 시 자동으로 설치 되지 않도록 지정합니다 .

루트 권한으로 한번 설정해 주셔야 합니다. 항목이 제 위치에 있으면 루트가 아닌 사용자로 설치를 수행할 수 있습니다. 그냥 실행하세요 mount /path/to/bind/dir.

참고할 몇 가지 사항이 있습니다.

  • user옵션을 사용하면 원래 파일 시스템을 마운트했던 동일한 사용자 계정만 제거를 수행할 수 있습니다. 여러 사용자가 관련된 경우 이 users옵션을 검토할 수 있습니다. man 8 mount자세히보다.
  • 이 옵션은 ( 바이너리 실행을 허용하지 않음), (setuid/setgid 비트를 존중하지 않음) 및 (장치를 해석하지 않음) user의 세 가지 다른 옵션을 의미합니다 . 이러한 기능을 복원하려면 해당 옵션을 목록 끝에 추가하십시오. 예를 들어, . 이러한 옵션은 보안에 영향을 미친다는 점에 유의하세요. 자세히보다.noexecnosuidnodevbind,rw,user,noauto,execman 8 mount

답변3

이 대답을 봐https://unix.stackexchange.com/a/767296/139357unshare 및 nsenter를 사용하여 루트가 아닌 사용자로 마운트를 바인딩하는 방법을 보여줍니다.

이 답변은 개선될 것입니다.

관련 정보