Virtual Box (Ubuntu Guest, Windows Host)에서 공유 폴더에 대한 파일 권한 문제


102

Virtual Box에서 Ubuntu를 사용하고 있으며 호스트 (Windows)와 VM (Ubuntu)간에 공유되는 폴더가 있습니다. Ubuntu의 공유 폴더에서 파일을 열면 소유자가 root로 설정되어 있으므로 변경할 수 없습니다.

소유권을 어떻게 본인에게 변경할 수 있습니까?

출력은 다음과 같습니다 ls -l.

-rwxrwxrwx 1 root root 0 2012-10-05 19:17 BuildNotes.txt

출력 df은 다음과 같습니다.

m@m-Linux:~/Desktop/vbox_shared$ df
Filesystem   1K-blocks      Used Available Use% Mounted on
/dev/sda1     29640780  10209652  17925440  37% /
none            509032       260    508772   1% /dev
none            513252       168    513084   1% /dev/shm
none            513252        88    513164   1% /var/run
none            513252         0    513252   0% /var/lock
none            513252         0    513252   0% /lib/init/rw
Ubuntu       214153212  31893804 182259408  15% /media/sf_Ubuntu
/dev/sr0         53914     53914         0 100% /media/VBOXADDITIONS_4.2.0_80737
Ubuntu       214153212  31893804 182259408  15% /home/m/Desktop/vbox_shared

VM의 옵션은 자동 마운트이며 readoly는 확인되지 않습니다.

을 사용하려고 /media/sf_Ubuntu했으나 권한 오류가 발생했습니다.

m@m-Linux:/media$ ls -l 
total 10
drwxrwx--- 1 root vboxsf 4096 2012-10-23 15:35 sf_Ubuntu
drwxrwx--- 2 root vboxsf 4096 2012-10-21 23:41 sf_vbox_shared
dr-xr-xr-x 6 m    m      2048 2012-09-13 07:19 VBOXADDITIONS_4.2.0_80737
m@m-Linux:/media$ cd sf_Ubuntu/
bash: cd: sf_Ubuntu/: Permission denied
m@m-Linux:/media$ cd sf_vbox_shared/
bash: cd: sf_vbox_shared/: Permission denied

나는 그룹에 있습니다 vboxsf:

m@m-Linux:~$ id
uid=1000(m) gid=1000(m) groups=4(adm),20(dialout),24(cdrom),46(plugdev),105(lpadmin),119(admin),122(sambashare),1000(m),1001(vboxsf)

공유 폴더를 어떻게 마운트 했습니까? VirtualBox 게스트 유틸리티 (예 : / media / sf_something)에 의해 자동 마운트되도록 하시겠습니까? 또는 mount 명령을 사용하여 수동으로 마운트 했습니까?
EightBitTony

또한 Windows의 VirtualBox에서 공유를 구성한 방법을 설명 할 수 있습니까? 공유에는 읽기 전용, 자동 마운트 및 영구의 세 가지 옵션이 있습니다.
EightBitTony

의견이 아닌 질문에 대한 업데이트를 게시하십시오. df파일 시스템을 수동으로 마운트하는 데 사용한 출력 및 명령을 포함하십시오 .
EightBitTony

감사합니다-/ media / sf_Ubuntu 파일 시스템이 있습니다. 공유 폴더이므로 수동으로 마운트 할 필요가 없습니다. / home / m / Desktop을 마운트 해제하고 아래 답변에 따라 작동하는 / media / sf_Ubuntu를 사용하는 것이 좋습니다.
EightBitTony

@Tony :이 폴더에 액세스 할 수 없습니다. 내가 정보를 추가하는 내 원래의 질문을 참조하십시오
user654019

답변:


159

이제 파일에 액세스하는 일반적인 방법은 VirtualBox가 공유 폴더를 자동 마운트 (아래에 /media/sf_directory_name표시됨) 한 다음 일반 우분투 사용자를 vboxsf그룹 에 추가하는 것입니다 (root로 #).

# usermod -aG vboxsf <youruser>

기본적으로 수동 조치없이 마운트는 다음과 같습니다.

drwxrwx--- 1 root vboxsf 40960 Oct 23 10:42 sf_<name>

따라서 vboxsf그룹은 모든 권한을 갖습니다. 해당 그룹에 사용자를 추가하면 모든 액세스 권한을 얻을 수 있습니다. 따라서 Windows 호스트에서 의미가없는 권한 변경에 대해 걱정할 필요가 없으며 액세스 권한 만 부여하면됩니다.

이 경우 자동 마운트 된 공유 폴더입니다.

Ubuntu               214153212  31893804 182259408  15% /media/sf_Ubuntu

로컬 사용자를 vboxsf그룹 에 넣어 공유 폴더에 액세스하는 데 사용해야하는 디렉토리입니다 . 사용자의 홈 디렉토리 아래에 '더 나은'링크를 원하면 언제든지 기호 링크를 작성할 수 있습니다.

ln -s /media/sf_Ubuntu /home/m/Desktop/vbox_shared

이러한 변경 사항을 적용하려면 VM을 재부팅해야합니다.

공유 폴더를 수동으로 마운트하는 경우 mount명령 에서 관련 옵션을 사용 하여 올바른 소유권으로 폴더를 설정해야합니다 (예 : gid, uid 및 umask 옵션 mount). 호스트 OS는 Linux와 동일한 권한 시스템을 지원하지 않기 때문에 VirtualBox는 누가 파일을 소유해야하는지 알 수 없습니다.

그러나 공유 폴더를 자동 마운트되도록 구성하는 것이 좋습니다 (VirtualBox 자체의 공유 폴더 구성에 대한 설정 임).


의심의 여지를 피하기 위해 정기적으로 마운트 된 파일 시스템에서 일반적으로 권한을 변경할 수 있다고 생각하지 않습니다.

tony@jabba:/media/sf_name$ ls -l tst.txt
-rwxrwx--- 1 root vboxsf 2283 Apr  4  2012 tst.txt
tony@jabba:/media/sf_name$ sudo chown tony tst.txt
[sudo] password for tony: 
tony@jabba:/media/sf_name$ ls -l tst.txt
-rwxrwx--- 1 root vboxsf 2283 Apr  4  2012 tst.txt
tony@jabba:/media/sf_name$ 

2
이것을 시도했을 때 사용자가 그룹에 이미 있다는 메시지가 표시되지만 공유 폴더의 파일을 변경하려고 할 때 저장하려고 할 때 오류가 발생합니다. 오류 : 파일 /home/m/Desktop/vbox_shared/test.tst를 저장할 수 없습니다. 예기치 않은 오류 : 임시 파일 이름을 바꾸는 중 오류 발생 : 텍스트 파일 사용 중입니다.
user654019

권한이 아닌 다른 문제입니다. 새 파일을 만들거나 다른 파일을 수정할 수 있습니다. 끊기-/ home / m / Desktop / vbox_shared? 공유 폴더를 수동으로 마운트 했습니까? 이것이 기본 경로가 아닙니다.
EightBitTony

시스템을 확인하면서 파일을 만들거나 삭제할 권한이 있고 퍼미션을 읽거나 쓸 수는 없습니다. 어떻게 나 자신에게 줄 수 있습니까?
user654019

9
적용하려면 재부팅이 필요한 것 같습니다.
Eric Wang

3
당신은이 답변에 대한 맥주를 제공합니다! 내가 이것을 만날 때까지 나는 이것을 전혀 작동시키지 못했습니다. 이것이 더 이상 믿을 수 없습니다. 한 번 이상 공표 할 수 있으면 좋겠다 !!
Tensigh

3

방금 Win-Ubuntu 공유 폴더에 동일한 문제가 있었고 해결 방법은 사용자를 vboxsf 그룹에 추가하고 / etc / group 파일을 편집하는 것입니다. 이것이 효과가 있기를 바랍니다. 아래에서 파일 편집 방법에 대한 간단한 구성표를 찾을 수 있습니다.

(edit /etc/group)
...
...
...
pulse:x:119:
pulse-access:x:120:
utempter:x:121:
rtkit:x:122:
saned:x:123:
openquake:x:1000:
sambashare:x:124:openquake,luisa
vboxsf:x:999:openquake,luisa   ##This is the line I add my user
postgres:x:125:
rabbitmq:x:126:
celery:x:500:
luisa:x:1001:

루이사.


2
/ etc / group을 직접 편집하지 말고이 작업에 적합한 도구를 사용하십시오 (이 경우 usermod -aG <group> <user>).
raimue

이것이 권장되는 주된 이유는 / etc / group과 같은 파일을 실수로 실수로 업데이트하면 DB를 무효화하고 본질적으로 사용자를 잠글 수 있기 때문입니다.
스펜서 윌리엄스

2

나는 같은 문제가 있었고 최신 버전의 VirtualBox Guest Additions 설치를 해결했습니다 . 제 경우에는 4.3.8에서 4.3.10으로 업그레이드했습니다.

설치가 완료되면 / media / sf_name 폴더에는 더 이상 "루트"가 그룹 소유자가 아닌 "vboxsf"가 있습니다.


1

sudo를 사용해 보셨습니까?

$sudo chown username filename

나는 이것이 VirtualBox 공유 폴더에서 작동한다고 생각하지 않습니다.
EightBitTony

sudo는 모든 곳에서 작동합니다! : P 링크
Extn3389

12
당신이 진심인지 잘 모르겠지만 유머가 있습니다. 마운트 된 공유 폴더는 vboxfs파일 시스템 형식이므로 파일 시스템을 존중하지 않습니다 chown.
EightBitTony

나는 이것이 효과가 있다고 생각해서 죄송합니다.
Extn3389

1
예, 그러나 소유자를 변경하지 않았습니다. 터미널에서 파일에 대한 tis 명령을 실행 한 후 파일 소유자를 확인한 후에도 여전히 루트에 속합니다.
user654019

1

마운트 명령에 대한 옵션을 제어 할 수있는 고급 기능이있는 경우 (예 : 수동으로 마운트하거나을 /etc/fstab사용하는 경우) -o uid=771옵션을 마운트 명령에 사용할 수 있습니다 .

의 항목 /etc/fstab은 다음과 같습니다

scanresults    /data/scanresults    vboxsf    uid=771    0 0

1

루트가 아닌 Linux 사용자를 위해 Ubuntu 게스트에서 Windows 호스트의 공유 폴더에 대한 전체 읽기, 쓰기 액세스를 활성화합니다.

이 단계를 통해 Linux 게스트 터미널에서 Windows 호스트 시스템의 특정 디렉토리에 액세스 할 수 있습니다. 이 예에서 OVB 관점의 공유 이름은 vshare (기본값)이고 Windows OS (호스트 OS)의 전체 dir 경로는 "C : \ var \"이고 전체 파일 경로는 게스트에서 액세스하면 vm은 "/ vagrant"가되고 마지막으로 전체 rea / write 액세스를 가능하게하는 사용자 이름은 "you"가됩니다.

 # how-to add a shared folder on the host
 VBoxManage sharedfolder add "host-name" -name "vshare" -hostpath "C:\var" -automount

1. 게스트 추가 필수 구성 요소 설치

다음 명령을 실행하여 게스트 추가 전제 조건을 설치하십시오.

 sudo apt-get install -y build-essential make gcc  linux-headers-$(uname -r) 
 linux-headers-generic make linux-source  linux-generic linux-signed-generic

2. 게스트 추가 설치

.iso 파일을 사용하여 다운로드하지 말고 설치 프로그램을 사용하지 마십시오. 간단하게 작동하지 않습니다!

sudo apt-get install virtualbox-guest-dkms 

3. VM 부팅시 공유 디렉토리가 자동 마운트되도록 변경

fstab 파일 끝에 다음 줄을 추가하여 vm 부트에서 공유 디렉토리가 자동 마운트되도록 변경하십시오 ( "vshare"conf 및 uid = 10001).

/media/sf_vshare /vagrant vboxsf bind,uid=10001,rw,umask=0000 0 0
# eof file: /etc/fstab 

4. vboxsf 그룹에 자신을 추가

호스트 컴퓨터의 파일을 vm에서 루트가 아닌 파일로 편집하려면 vboxsf 그룹에 사용자를 추가해야합니다. # 마운트 sudo 마운트 -a

sudo usermod -G vboxsf -a you 

5. 재부팅 및 확인

vm을 재부팅하고 ssh를 통해 로그인하여 파일 공유를 확인하십시오. # ssh를 vm ssh you @ host-name으로

# check as yourself that you have 
find /vagrant

0

게스트 시스템을 업그레이드 한 후 가상 상자 추가를 다시 설치해야합니다. 문제는 우분투에서 일부 구성 요소를 업그레이드 할 때 vb-additions를 설치 한 후 일부 구성 요소가 변경되어 sf_forlder_name에 액세스 할 수 있다고 생각합니다. 이 방법으로 내 문제가 해결되었습니다. Pisu의 솔루션이 작동합니다.


내 경험상 가상 상자 게스트 추가는 호스트 VirtualBox 시스템을 업그레이드 할 때만 업그레이드해야합니다. 클라이언트의 소프트웨어가 변경 될 때는 아닙니다. 이를 위해 클라이언트에서 어떤 소프트웨어를 업그레이드 했습니까?
Anthon

1
아냐, 니키 말이 맞아 게스트 OS 커널을 업데이트하는 경우 게스트 추가를 다시 설치해야합니다.
스펜서 윌리엄스

-2
  • 공유를 다음과 같이 마운트 해제 root
  • chown및로 필요한 변경chmod
  • 재부팅 및 체크 아웃 공유에 올바른 권한이 있습니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.