사용자 공간의 다른 위치에 있는 디렉터리 바인딩을 허용하는 Linux vfs 도구가 있습니까(예: mount --bind)?

사용자 공간의 다른 위치에 있는 디렉터리 바인딩을 허용하는 Linux vfs 도구가 있습니까(예: mount --bind)?

사용자 프로세스의 경우 디렉토리를 다른 곳에 마운트하고 싶지만 루트 권한이 없는 사용자 공간에 마운트하고 싶습니다. mount --bind /origin /dest와 비슷하지만 vfs 래퍼가 있습니다. 사용자 모드에서 미세 조정된 chroot와 같습니다.

프로그램은 필요한 경로를 "대체"하기 위해 시스템 호출을 파일로 래핑합니다. 다음 명령줄을 사용하여 호출할 수 있습니다.

바인딩vfs /fake-home:/home ls /home

나는 이것이 이미 존재한다고 확신합니다! :)

답변1

당신은 그것을 사용할 수 있습니다프로트귀하의 예와 거의 같은 방식입니다.

proot -b /fake-home:/home ls /home

BindFS/FUSE와 달리 PRoot는 사용자에게 속하지 않은 파일과 디렉터리를 바인딩할 수 있습니다.

답변2

이것앵무새프로그램은 사용자가 요청한 작업을 수행할 수 있습니다. 시스템 호출을 가로채고 특정 경로를 리디렉션합니다(예를 들어 /anonftpFTP를 통해 원격 파일에 투명하게 액세스하기 위해 로 시작하는 모든 경로가 다시 매핑됩니다). 또한 완전히 사용자 공간에서 실행됩니다.

그러나 일반적이고 흔하지 않은 네트워크 프로토콜의 인상적인 배열에도 불구하고 parrot귀하가 요구하는 것처럼 간단한 파일 시스템->파일 시스템 재작성을 수행하는 모듈은 없습니다. C 프로그래밍을 알고 있다면 추가하는 것이 매우 간단할 것입니다.

또는,파일 시스템 바인딩(계속 달린다퓨즈)은 mount --bind사용자 공간에서처럼 작동합니다. (그러나 이것은 귀하의 질문에서 언급한 리디렉션과 반대입니다 /home.)/fake-home

답변3

VFS는 이미 파일 시스템의 루트가 아닌 마운트를 허용합니다. fstab 항목에 또는 옵션 을 user추가 하고 .usersvfs.usermount=1/etc/sysctl

그러나 이들 중 어느 것도 chroot와 같은 제어 기능을 제공하지 않습니다. 이 bind옵션은 권한을 변경하거나 동일한 파일 시스템 및 콘텐츠에 대한 두 번째 mtab 항목인 "대체" 액세스를 허용하지 않습니다. 번들 설치의 수정 사항은 원래 설치에 영향을 줍니다.

더 나아가기 전에 최종 목표를 명확히 하도록 하겠습니다.

답변4

mount --bindmount_namespaces를 사용하면 다른 프로세스에서 사용자를 볼 수 없습니다 . 그러나 일반적 mount --bind으로 루트 사용자에게만 해당됩니다(보안상의 이유로). 따라서 루트가 아닌 사용자에게 mount_namespaces를 유용하게 만들려면 먼저 다음을 사용해야 합니다.사용자 네임스페이스새 네임스페이스에서 "로컬 루트"가 되면 이 작업이 허용됩니다.

다음과 같이 셸에서 사용할 수 있습니다. 이 예에서는 chroot 디렉터리를 준비할 때 사용자 및 마운트 공간의 사용을 구체적으로 보여줍니다(이 chroot작업은 일반적으로 권한이 부여됩니다).

unshare --user --map-root-user --mount-proc --pid --fork
mkdir -p newroot/dev
mount --rbind /dev newroot/dev
....other chroot preparation....
chroot newroot
su - user1

mount --rbind디렉토리에 다른 마운트 지점이 포함되어 있는 경우(내 경우에는 그렇습니다) mount --bind새 user&mount 네임스페이스에만 적용되기 때문에 (대신) 을 사용하고 있습니다 ./dev/

아마도 이에 대한 설명은 사용자가 일반적으로 권한이 없는 사용자가 볼 수 없는 것, 즉 "하위 설치"에 의해 숨겨진 하위 디렉토리를 볼 수 있는 방법이 없어야 한다는 것입니다. 베이스는 벗기지 마시고, --rbind허용만 해주세요.

관련 정보