systemd-nspawn: 폴더의 파일 시스템 권한 바인딩

systemd-nspawn: 폴더의 파일 시스템 권한 바인딩

내가 가진 것:

젠투 호스트와 우분투 컨테이너.

내가 원하는 것은:

호스트에서 컨테이너에 마운트하여 /home정상적으로 사용합니다.

나는 무엇을하고 있는가:

플래그를 사용하여 컨테이너를 시작합니다 -U --bind=/home.

내가 얻는 것:

컨테이너에 내 /home디렉터리가 있지만 아무도 없음: 그룹 소유자 없음으로 마운트되었습니다.

scratch:5:0:/home/vkirsano> ll /home 
total 24
drwxr-xr-x  3 nobody nogroup  4096 Sep 19 17:39 krokoziabla
drwx------  2 nobody nogroup 16384 Oct 20  2016 lost+found
drwxr-xr-x 56 nobody nogroup  4096 Sep 20 22:15 vkirsano

따라서 저는 실제로 해당 디렉토리의 내용에 대한 읽기 전용 액세스 권한만 갖고 있는데 /home이는 제가 원하는 것이 아닙니다. vkirsano호스트와 동일한 UID:GID를 사용하여 컨테이너에 사용자를 생성했다고 가정해 보겠습니다. 따라서 systemd-nspawn이 디렉터리를 바인딩할 때 파일 소유권에 대한 원래 정보만 유지하도록 하려고 합니다.

내가 뭘 묻고 있는 거지?

폴더를 마운트하는 일반적인 방법은 무엇입니까(예: /home컨테이너 내에서 제대로 작동하는 기능 유지)?

답변1

AFAIK는 -U주로 rw 와 호환되지 않습니다 --bind. ~에서문서:

이 옵션을 --private-users와 함께 사용하면 결과 마운트 지점은 none 사용자가 소유하게 됩니다. 이는 마운트와 해당 파일 및 디렉터리가 컨테이너에 존재하지 않아 와일드카드 UID 65534(nobody) 아래에 표시되는 연결된 호스트 사용자 및 그룹이 계속 소유하기 때문입니다. 이러한 바인드 마운트가 생성되면 --bind-ro=를 사용하여 읽기 전용으로 만드는 것이 좋습니다.

저는 nspawn을 사용하여 Ubuntu 기반 컨테이너를 만들어 Arch Linux 호스트에서 Yocto를 구축합니다. Arch 커널이 활성화되면 내 파일 에서 이를 설정 CONFIG_USER_NS=y해야 합니다 . (또한 호스트와 컨테이너 모두 동일한 UID를 가진 사용자를 추가해 놓았기 때문에 컨테이너와 호스트 모두 동일한 방식으로 접근할 수 있습니다.) PrivateUsers=off/etc/systemd/nspawn/foo.nspawnBind=

관련 정보