Я столкнулся со странной проблемой полномочий;
Совместно используемая папка показывает один набор полномочий в Windows и полностью различные при доступе в Linux через VirtualBox.
Совместно используемая папка является моим XAMPP htdocs/каталог, поскольку я хочу способность работать над теми же репозиториями/сайтами от 2 различных сред - таким образом, я не могу переместить папку.
/media/sf_<myfolder>
. vboxsf
группа пользователей, и я подтвердил это через проверку /etc/group
.vitrualbox-guest-additions-iso
. Общие буферы обмена хорошо работают.cygwin
для моего терминала WindowsWindows (от 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*
sudo chmod <permissions> <file>
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*
Любая справка была бы потрясающей!
Короткий ответ : Вы используете несовместимые среды и программное обеспечение; 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: с помощью системы, поскольку корень является очень плохой практикой! Особенно учитывая Вы - разработчик. Рассмотрите использование обычного пользователя вместо этого.