Совместно используемая папка показывает различные полномочия между хостом Windows и гостем Ubuntu при использовании VirtualBox

Я столкнулся со странной проблемой полномочий;

Совместно используемая папка показывает один набор полномочий в Windows и полностью различные при доступе в Linux через VirtualBox.

Совместно используемая папка является моим XAMPP htdocs/каталог, поскольку я хочу способность работать над теми же репозиториями/сайтами от 2 различных сред - таким образом, я не могу переместить папку.

Моя текущая установка

  • Windows 7 (Host), с Ubuntu, работающей в VirtualBox (Гость)
  • Я настроил папку как Общий ресурс и могу получить доступ к ней через терминал Ubuntu под /media/sf_<myfolder>.
  • Совместно используемая папка установлена автосмонтироваться и быть постоянной в настройках VirtualBox.
  • Мой пользователь является частью vboxsf группа пользователей, и я подтвердил это через проверку /etc/group.
  • Я установил vitrualbox-guest-additions-iso. Общие буферы обмена хорошо работают.
  • Я использую cygwin для моего терминала Windows

Как полномочия появляются

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: -

Я также создал файл из обеих систем, для осмотра полномочий по умолчанию. Я сделал то же с тестовыми каталогами и оба файла +, папки показывают точно те же полномочия.

Windows

-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*

Ubuntu

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

Я уже попробовал...

  • Перезапуск VM (много раз; D)
  • Подтверждение общего каталога является одним и тем же и из Windows и из Linux через создание тестовых файлов в одном и проверке, что они появляются в другом.
  • Предложения предложений в этом вопросе

Мои вопросы:

  • Почему наборы полномочий отличаются между системами?
  • Они присваивают на уровне ОС, не уровне файла?

Любая справка была бы потрясающей!

1
задан 11 September 2017 в 02:06

1 ответ

Короткий ответ : Вы используете несовместимые среды и программное обеспечение; Windows, Cygwin и VirtualBox вся реализация non-backwards-compatible реализации стандарты 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 файла соответствует пользователю root. В другой системе это Domain.

В случае перекрестной работы с системами Windows существует больше к нему. Несмотря на то, что стандарт POSIX не имел никаких действительно коренных изменений, программисты Microsoft всегда боролись с ним. По курсу от Windows NT до Windows 10 там были три необратно совместимых, переписывает реализации . Таким образом для совместимости, Cygwin использует собственная реализация из отображающихся дескрипторов безопасности Windows к полномочиям POSIX.

вдобавок к нему Вы пытаетесь получить доступ к файловой системе Windows через VirtualBox. VirtualBox, конечно, реализовали его собственное отображение также, и это отображение не работает очень хорошо (как Вы видите, изменяя полномочия через chmod и не видя отраженных изменений) .

Так, прямо сейчас, у Вас есть 3 реализации в Вашей системе, несовместимой друг с другом. Это - причина Вас видящий проблемы.

FTR: VirtualBox является открытым исходным кодом, поэтому если Вы - действительно чувство, сильно желающее к нему, Вы могли бы переписать его, чтобы быть совместимыми с Cygwin (поскольку их реализация является единственной совместимой со спиной реализацией POSIX в Windows насколько я знаю) .

NB: с помощью системы, поскольку корень является очень плохой практикой! Особенно учитывая Вы - разработчик. Рассмотрите использование обычного пользователя вместо этого.

1
ответ дан 7 December 2019 в 15:30

Другие вопросы по тегам:

Похожие вопросы: