질문
게스트 내부에서 쓰기 권한이 있는 공유 폴더를 구성하는 데 문제가 있습니다. 내 특별한 경우는 공유 폴더가 호스트 시스템에 마운트된 CIFS 네트워크 공유를 참조했다는 것입니다.
호스트 구성
네트워크 공유(및 공유 폴더)는 다음을 /media/nas/temp
통해 설치됩니다.
sudo mount -t cifs -o username=dave,vers=3.0,uid=dave,gid=libvirt-qemu //nas/temp /media/nas/temp
가상 관리자 구성:
호스트 관점의 권한:
dave@host:~$ ll /media/nas/
drwxr-xr-x 2 dave libvirt-qemu 0 Dez 6 15:36 temp/
게스트 구성
/temp
다음을 통해 ( /media/nas/temp
호스트 시스템에) 설치:
sudo mount -t 9p -o trans=virtio,version=9p2000.L /temp /media/temp
libvirt-qemu
게스트 관점의 권한(64055는 호스트 그룹의 uid):
dave@guest:~$ ll /media
drwxr-xr-x 2 dave 64055 0 dec 6 15:36 temp/
질문
새 파일 생성과 같은 쓰기 작업은 다음 오류를 트리거합니다.
dave@guest:~$ touch /media/temp/myfile.log
touch: cannot touch '/media/temp/myfile.log': Permission denied
또한 호스트 옵션 file_mode
에서 설치를 시도했습니다 .dir_mode
sudo mount -t cifs -o username=dave,vers=3.0,uid=dave,gid=libvirt-qemu,\
file_mode=0777,dir_mode=0777 //nas/temp /media/nas/temp
호스트 관점의 새로운 권한:
dave@host:~$ ll /media/nas
drwxrwxrwx 2 dave libvirt-qemu 0 Dez 6 15:36 temp/
이상하게도 이제 다른 오류가 발생합니다.
dave@guest:~$ touch /media/temp/myfile.log
touch: cannot touch '/media/temp/myfile.log': Operation not supported
무슨 일이 일어나는지
호스트는
/media/nas/temp
user 를 사용하여 쓸 수 있습니다dave
.게스트 내에서 CIFS(동일한 자격 증명)를 통해 직접 마운트할 수 있지만 현재 환경에서는 이것이 불가능합니다.
또한 localhost 폴더를 마운트하고(예:
/home/dave/Downloads/qemu-test
동일한 권한으로) 여기에 쓸 수 있습니다. 이 경우 권한은 다음과 같습니다.
dave@host:~$ ll ~/Downloads/
drwxrwx---+ 2 dave libvirt-qemu 4096 Dez 6 17:25 qemu-test/
질문
네트워크나 로컬 폴더를 공유하려는 경우 왜 다른가요 mount -t 9p
? 표시된 것처럼 권한은 동일해야 하며 게스트(?)에 대해 어떤 마운트 지점을 공유하는지는 중요하지 않습니다.
호스트 시스템에서 네트워크 공유로 마운트된 공유 폴더를 프로그래밍한 사람이 있습니까(만약 그렇다면 어떻게)?
관련된
로컬 폴더 공유에 관한 유사한 게시물:
답변1
더 많은 조사를 한 후에 이것이 나에게 도움이 되었습니다. 중요 사항:
- 설치 모드를 스쿼시(통과 또는 매핑되지 않음)로 설정합니다.
- 마운트 지점 소유자를 libvirt-qemu로 설정하고 그룹을 dave(게스트에서 사용되는 사용자/uid)로 설정합니다.
- 마운트 CIFS 옵션에서 설정합니다
file_mode=0755
.dir_mode=0755
마운트 예(호스트):
sudo mount -t cifs -o username=dave,vers=3.11,uid=libvirt-qemu,gid=dave,file_mode=0775,dir_mode=0775 //nas/temp /media/nas/temp
광고 1.: 다른 모드에서도 비슷한 오류가 발생했습니다.
touch: xxx 설정 시간: 해당 파일이나 디렉터리 없음
터치: '/media/temp/myfile.log'를 터치할 수 없습니다: 작업이 지원되지 않습니다.
광고 2.: libvirt-qemu를 불충분한 그룹으로 설정하면 "권한 거부" 오류가 발생합니다. 이 질문에서는 그 반대입니다. 게스트에 대해 올바른 UID를 선택했는지 확인하십시오. 예를 들어 호스트와 게스트의 dave에 대해 동일한 UID를 설정하십시오. 참고: QEMU/KVM 가상 머신은 libvirt-qemu 사용자로 실행됩니다.
광고 3.: 이 옵션은 그룹이 속한 그룹으로 설정된 사용자 dave가 마운트 지점을 쓸 수 있도록 만듭니다(표준은 읽기 전용).