VirtualBox를 사용할 때 공유 폴더에 Windows 호스트와 Ubuntu 게스트간에 다른 권한이 표시됨

팀마

이상한 권한 문제가 발생했습니다.

공유 폴더는 Windows에서 한 세트의 권한을 표시하고 VirtualBox를 통해 Linux에서 액세스 할 때 완전히 다른 권한 세트를 표시합니다.

공유 폴더는 내 XAMPP htdocs / 디렉토리입니다. 2 개의 다른 환경에서 동일한 저장소 / 사이트에서 작업 할 수있는 기능을 원하므로 폴더를 이동할 수 없습니다.

내 현재 설정

  • Windows 7 (호스트), VirtualBox (게스트) 내에서 실행되는 Ubuntu
  • 폴더를 공유 위치로 설정했으며 .NET에서 Ubuntu의 터미널을 통해 액세스 할 수 있습니다 /media/sf_<myfolder>.
  • 공유 폴더는 자동 마운트로 설정되며 VirtualBox의 설정에서 영구적입니다.
  • 내 사용자는 vboxsf사용자 그룹의 일부이며 확인을 통해 확인했습니다 /etc/group.
  • 을 (를) 설치했습니다 vitrualbox-guest-additions-iso. 공유 클립 보드가 제대로 작동합니다.
  • cygwinWindows 터미널에 사용 하고 있습니다.

권한이 나타나는 방식

Windows (cygwin 터미널에서), 사용 $ ls -alF

me@my-server /cygdrive/c/xampp/htdocs/my-website$ ls -alF
total 61313
drwxrwxr-x+ 1 me Domain Users        0 Sep  6 12:12 ./
drwxrwx---+ 1 me Domain Users        0 Sep  8 16:22 ../
drwxrwxr-x+ 1 me Domain Users        0 Sep  8 15:57 .git/
drwxrwxr-x+ 1 me Domain Users        0 Sep  6 12:06 bal/
-rw-rw-r--+ 1 me Domain Users     1065 Sep  6 12:06 .csslintrc
-rw-rw-r--+ 1 me Domain Users      367 Sep  6 12:06 .editorconfig

Ubuntu 터미널 (VirtualBox), 사용 $ ls -alF

me@my-server:/media/sf_htdocs/my-website$ ls -alF
total 61256
drwxrwx--- 1 root vboxsf    12288 Sep  6 12:12 ./
drwxrwx--- 1 root vboxsf     4096 Sep  8 16:22 ../
drwxrwx--- 1 root vboxsf     4096 Sep  8 15:57 .git/
drwxrwx--- 1 root vboxsf        0 Sep  6 12:06 bal/
-rwxrwx--- 1 root vboxsf     1065 Sep  6 12:06 .csslintrc*
-rwxrwx--- 1 root vboxsf      367 Sep  6 12:06 .editorconfig*

Windows, 사용 $ stat

me@my-server /cygdrive/c/xampp/htdocs/my-website$ stat .csslintrc
  File: .csslintrc
  Size: 1065            Blocks: 4          IO Block: 65536  regular file
Device: bcd2ece6h/3167939814d   Inode: 4222124651673917  Links: 1
Access: (0664/-rw-rw-r--)  Uid: (1051198/me)   Gid: (1049089/Domain Users)
Access: 2017-09-06 12:06:15.578083600 +1000
Modify: 2017-09-06 12:06:15.578583700 +1000
Change: 2017-09-06 12:06:15.578583700 +1000
 Birth: 2017-09-06 12:06:15.578083600 +1000

Ubuntu, 사용 $ stat

me@my-server:/media/sf_htdocs/my-website$ stat .csslintrc 
  File: '.csslintrc'
  Size: 1065        Blocks: 3          IO Block: 4096   regular file
Device: 29h/41d Inode: 14          Links: 1
Access: (0770/-rwxrwx---)  Uid: (    0/    root)   Gid: (  999/  vboxsf)
Access: 2017-09-06 12:06:15.578083600 +1000
Modify: 2017-09-06 12:06:15.578583700 +1000
Change: 2017-09-06 12:06:15.578583700 +1000
 Birth: -

또한 기본 권한을 검사하기 위해 두 시스템에서 파일을 생성했습니다. 나는 테스트 디렉토리에서 똑같이했고, 두 파일 + 폴더 모두 똑같은 권한을 보여줍니다.

윈도우

-rwxrwxr-x+ 1 Administrators Domain Users        0 Sep 11 08:52 .test-from-linux-vm*
-rw-rw-r--+ 1 me      Domain Users        0 Sep 11 08:52 .test-from-windows

UbuntuVM

-rwxrwx--- 1 root vboxsf        0 Sep 11 08:52 .test-from-linux-vm*
-rwxrwx--- 1 root vboxsf        0 Sep 11 08:52 .test-from-windows*

내가 알아 차린 것

  • Ubuntu에서 파일 / 폴더 권한을 변경할 수 없습니다. sudo chmod <permissions> <file>
  • Windows에서 권한을 변경할 수 있지만 이러한 변경 사항은 Ubuntu에 반영되지 않습니다.

Windows ; web.config를에서 664업데이트 했습니다.755

-rwxr-xr-x+ 1 me      Domain Users     4555 Sep  6 12:06 web.config*

우분투

-rwxrwx--- 1 root vboxsf     4555 Sep  6 12:06 web.config*

벌써 해봤는데 ...

  • VM 다시 시작 (여러 번; D)
  • 공유 디렉토리가 하나에 테스트 파일을 만들고 다른 파일에 나타나는지 확인하여 Windows와 Linux 모두에서 동일한 지 확인합니다.
  • 이 질문 의 제안 제안

내 질문 :

  • 권한 집합이 시스템마다 다른 이유는 무엇입니까?
  • 파일 수준이 아닌 OS 수준에서 할당되고 있습니까?

어떤 도움이라도 굉장 할 것입니다!

안녕 천사

짧은 대답 : 호환되지 않는 환경과 소프트웨어를 사용하고 있습니다. Windows, Cygwin 및 VirtualBox는 모두 POSIX 표준 의 이전 버전과 호환되지 않는 구현을 구현 하므로 하나의 변경 사항이 다른 표준 에 반영되지 않습니다.

일반적으로 파일의 그룹과 사용자를 문자열로 저장하는 것은 너무 낭비입니다. 추가 디스크 공간이 많이 필요할뿐만 아니라 최악의 경우 단일 파일에 대한 권한이 있는지 확인 하는 데 O (n) 의 처리 시간이 필요합니다!

대신 이러한 속성은 숫자로 저장되므로 권한을 확인 하려면 항상 O (1) 만 필요합니다 . 예를 들어 stat명령을 사용하여 볼 수 있습니다 .

$ stat r600_state_common.c 
  File: r600_state_common.c
  Size: 90718           Blocks: 184        IO Block: 4096   regular file
Device: 26h/38d Inode: 70588       Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/constantine)   Gid: ( 1000/constantine)
Access: 2017-09-08 00:18:26.243828226 +0300
Modify: 2017-09-07 10:52:33.387136858 +0300
Change: 2017-09-07 10:52:33.387136858 +0300
 Birth: -

따라서 시스템에서 파일의 UID는 user root. 다른 시스템에서는 Domain.

Windows 시스템과의 교차 작업 의 경우 더 많은 것이 있습니다. POSIX 표준에는 근본적인 변화가 없었음에도 불구하고 Microsoft 프로그래머는 항상 이에 어려움을 겪었습니다. Windows NT에서 Windows 10까지의 과정에서 이전 버전과 호환되지 않는 세 번의 구현 재 작성이 있었습니다. 따라서 호환성을 위해 Cygwin은 Windows 보안 설명자를 POSIX 권한에 매핑 하는 자체 구현사용하고 있습니다 .

그 위에 VirtualBox를 통해 Windows 파일 시스템에 액세스하려고합니다. 물론 VirtualBox도 자체 매핑을 구현했으며이 매핑은 잘 작동하지 않습니다 (chmod를 통해 권한을 변경하고 변경 사항이 반영되지 않음을 통해 알 수 있듯이) .

지금 당장 시스템에 서로 호환되지 않는 세 가지 구현이 있습니다. 이것이 당신이 문제를 보는 이유입니다.

FTR : VirtualBox는 오픈 소스이므로 정말로 관심이 있다면 Cygwin과 호환되도록 다시 작성할 수 있습니다 (내가 아는 한 Windows에서 유일한 백호환 POSIX 구현이므로) .

주의 : 시스템을 루트로 사용하는 것은 매우 나쁜 습관입니다! 특히 당신이 개발자라면. 대신 일반 사용자를 사용하는 것이 좋습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관