J'ai rencontré un problème étrange d'autorisations;
Un dossier partagé affiche un ensemble d'autorisations sous Windows et totalement différentes lors de l'accès à Linux via VirtualBox.
Le dossier partagé est mon répertoire XAMPP htdocs /, car je souhaite pouvoir travailler sur les mêmes référentiels/sites à partir de 2 environnements différents. Par conséquent, je ne peux pas déplacer le dossier.
/media/sf_<myfolder>
.vboxsf
et je l'ai confirmé en vérifiant /etc/group
.vitrualbox-guest-additions-iso
. Les presse-papiers partagés fonctionnent bien.cygwin
pour mon terminal Windows Windows (du terminal cygwin), en utilisant $ 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
Terminal Ubuntu (VirtualBox), en utilisant $ 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, en utilisant $ 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, en utilisant $ 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: -
J'ai également créé un fichier à partir des deux systèmes, afin d'inspecter les autorisations par défaut. J'ai fait la même chose avec les répertoires de test, et les deux fichiers + dossiers affichent exactement les mêmes autorisations.
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 ; mise à jour de web.config de 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*
Toute aide serait géniale!
Réponse courte : Vous utilisez des environnements et des logiciels incompatibles. Windows, Cygwin et VirtualBox implémentent tous des implémentations non compatibles avec la version antérieure de normes POSIX , d'où la raison pour laquelle les modifications apportées dans l'une ne sont pas reflétées dans les autres.
En général : stocker un groupe et un utilisateur d'un fichier sous forme de chaîne serait une perte de temps considérable. Non seulement cela prendrait beaucoup d'espace disque supplémentaire, mais il faudrait aussi O (n) du temps de traitement dans le pire des cas pour vérifier si vous avez les permissions pour un seul fichier!
Au lieu de cela, ces attributs sont stockés sous forme de nombre, ce qui nécessiterait toujours simplement O (1) pour vérifier les autorisations. Vous pouvez les voir en utilisant, par exemple, stat
commande:
$ 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: -
Ainsi, dans votre système, l'UID du fichier correspond à l'utilisateur root
. Dans l'autre système, il s'agit de Domain
.
En cas de travail transversal avec les systèmes Windows , il y a plus que cela. Malgré le fait que le standard POSIX n’ait pas subi de changements vraiment fondamentaux, les programmeurs Microsoft ont toujours eu du mal à l’utiliser. Au cours de Windows NT à Windows 10, il y a il y a eu trois réécritures de la mise en oeuvre non compatibles avec la version antérieure . Ainsi, pour des raisons de compatibilité, Cygwin utilise sa propre implémentation pour mapper les descripteurs de sécurité Windows sur les autorisations POSIX.
En plus de cela, vous essayez d'accéder à un système de fichiers Windows via VirtualBox. Bien sûr, VirtualBox a également implémenté son propre mappage, et ce mappage ne fonctionne pas très bien (comme vous pouvez le constater en modifiant les autorisations via chmod et en ne voyant pas les modifications reflétées).
Donc, maintenant, vous avez 3 implémentations sur votre système, incompatibles les unes avec les autres. C'est la raison pour laquelle vous voyez les problèmes.
FTR: VirtualBox est une source ouverte. Si vous y tenez vraiment, vous pourrez le réécrire pour qu'il soit compatible avec Cygwin (car leur implémentation est la seule implémentation POSIX rétro-compatible sous Windows pour autant que je sache)].
NB: utiliser un système en tant que racine est une très mauvaise pratique! Surtout si vous êtes développeur. Pensez à utiliser un utilisateur habituel à la place.