사용자가 완전히 읽을 수 있는 폴더가 있다고 가정해 보겠습니다. 내 홈 폴더에 설치하고 싶습니다. 나는 파일이 공개되기를 원 ~/
하고 다른 프로그램이 그것이 마운트라는 것을 "알지" 않기를 원하기 때문에 심볼릭 링크를 사용할 수 없습니다 . 이 기능을 수행할 수 있는 퓨즈 프로그램이 있습니까? 문제 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
루트가 아닌 사용자가 파일 시스템을 마운트하도록 허용합니다.noauto
mount -a
이 항목이 부팅 시 자동으로 설치 되지 않도록 지정합니다 .
루트 권한으로 한번 설정해 주셔야 합니다. 항목이 제 위치에 있으면 루트가 아닌 사용자로 설치를 수행할 수 있습니다. 그냥 실행하세요 mount /path/to/bind/dir
.
참고할 몇 가지 사항이 있습니다.
- 이
user
옵션을 사용하면 원래 파일 시스템을 마운트했던 동일한 사용자 계정만 제거를 수행할 수 있습니다. 여러 사용자가 관련된 경우 이users
옵션을 검토할 수 있습니다.man 8 mount
자세히보다. - 이 옵션은 ( 바이너리 실행을 허용하지 않음), (setuid/setgid 비트를 존중하지 않음) 및 (장치를 해석하지 않음)
user
의 세 가지 다른 옵션을 의미합니다 . 이러한 기능을 복원하려면 해당 옵션을 목록 끝에 추가하십시오. 예를 들어, . 이러한 옵션은 보안에 영향을 미친다는 점에 유의하세요. 자세히보다.noexec
nosuid
nodev
bind,rw,user,noauto,exec
man 8 mount
답변3
이 대답을 봐https://unix.stackexchange.com/a/767296/139357unshare 및 nsenter를 사용하여 루트가 아닌 사용자로 마운트를 바인딩하는 방법을 보여줍니다.
이 답변은 개선될 것입니다.