10.11 El Capitan Partage de Fichier en Ecriture

Wolf_51

Membre actif
14 Mars 2016
136
8
49
Bonjour, je souhaite partager un fichier en écriture entre mon iMac et un Macbook Pro.

C'est un fichier que j'utilise quotidiennement et je souhaite que le MBP prenne la main dessus le à J+1 pour saisir la facturation.
Par la suite je reprend la main dessus pour mon écriture quotidienne.

J'ai donc depuis mon iMac autorisé l'accès au MBP à mon dossier partagé via
"Préférence Système / Partage / Partage de Fichiers"
La, je renseigne le dossier à partager et j'ajoute le compte Utilisateur qui peut intervenir sur ce fichier en lui donnant la permission "Lecture / Ecriture".

Ensuite sur mon fichier Cmd+i et la Partage et Permission et je vérifie que l'utilisateur y soit avec la permission d'écrire sur mon fichier.
Jusque la, tout fonctionne.

L'utilisateur, prend sur son MBP le relais, fais ses écritures et sauvegarde le fichier modifié.
Par contre, lorsque je reprends le relais je peux consulter, mais ne peut plus écrire sur ce même fichier sans faire au préalable une duplication.

Ma question est donc : comment faire pour avoir un fichier qui puisse être consulté et modifié à souhait par les 2 comptes utilisateurs ?

Merci de votre aide.
 
Bonjour, je souhaite partager un fichier en écriture entre mon iMac et un Macbook Pro.

C'est un fichier que j'utilise quotidiennement et je souhaite que le MBP prenne la main dessus le à J+1 pour saisir la facturation.
Par la suite je reprend la main dessus pour mon écriture quotidienne.

J'ai donc depuis mon iMac autorisé l'accès au MBP à mon dossier partagé via
"Préférence Système / Partage / Partage de Fichiers"
La, je renseigne le dossier à partager et j'ajoute le compte Utilisateur qui peut intervenir sur ce fichier en lui donnant la permission "Lecture / Ecriture".

Ensuite sur mon fichier Cmd+i et la Partage et Permission et je vérifie que l'utilisateur y soit avec la permission d'écrire sur mon fichier.
Jusque la, tout fonctionne.

L'utilisateur, prend sur son MBP le relais, fais ses écritures et sauvegarde le fichier modifié.
Par contre, lorsque je reprends le relais je peux consulter, mais ne peut plus écrire sur ce même fichier sans faire au préalable une duplication.

Ma question est donc : comment faire pour avoir un fichier qui puisse être consulté et modifié à souhait par les 2 comptes utilisateurs ?

Merci de votre aide.
Salut

Dans les options de partage, ton utilisateur a-t-il aussi les autorisations d'écriture sur ce fichier?
 
Salut

Dans les options de partage, ton utilisateur a-t-il aussi les autorisations d'écriture sur ce fichier?
Tout à fait et il peut écrire sur le fichier (numbers).
Par contre moi ensuite je ne peux plus.
 
Oui ils l'ont.
Mais on dirait que lorsque l'un écrit puis valide, le second perd ses droits d'écriture.
 
Je viens de faire un test avec un document Pages :
1) Création d'un répertoire Test sur le Bureau de mon mac A + création d'un fichier Pages Test dans ce répertoire.
2) Partage de ce Répertoire en écriture avec un utilisateur toto d'un Mac B (présent aussi sur le Mac A)
3) Clic droit sur ce partage puis "Appliquer les autorisations aux éléments inclus"
4) Modification du fichier Test sur Mac B puis fermeture.
5) ouverture et modification du fichier Test sur Mac A + sauvegarde -> pas de soucis

Dans le terminal :
Jean:~ jean$ ls -la@e Desktop/Test/
total 152
drwxr-x---+ 6 jean staff 204 24 mar 16:31 .
0: user:toto allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity
drwx------+ 52 jean staff 1768 24 mar 16:27 ..
0: group:com.apple.sharepoint.group.5 allow search
-rw-r--r--@ 1 jean staff 6148 24 mar 16:30 .DS_Store
com.apple.FinderInfo 32
drwxrwxrwx@ 3 jean staff 102 24 mar 16:30 .TemporaryItems
com.apple.FinderInfo 32
com.apple.quarantine 20
-rw-r--r--+ 1 jean staff 0 24 mar 16:27 .com.apple.timemachine.supported
0: user:toto allow read,write,append,readattr,writeattr,readextattr,writeextattr,readsecurity
-rw-r--r--@ 1 jean staff 67430 24 mar 16:31 Test.pages
com.apple.FinderInfo 32
com.apple.iwork.documentUUID#PS 16
com.apple.iwork.documentUUID.synced 16
com.apple.quarantine 20
Jean:~ jean$
 
De mon côté, j'essaierais avec un dossier qui soit à la racine de mon compte (= à côté de Bureau, Documents, … et pas dans un de ces dossiers).

Et puis je vérifierais que Numbers a été quitté sur l'autre Mac après la modification du fichier.
 
Je ne confirme pas l'expérimentation finale de Jean :coucou: [point 5 : possibilité d'écrire en tant qu'utilisateur = macomaniac au fichier modifié par toto] mais je débouche, au contraire, exactement sur l'expérience de Wolf [déni d'écriture au fichier modifié par toto, car macomaniac n'en est pas le propriétaire, et possibilité d'écrire seulement à un duplicata du fichier].

Voici mon descriptif : je ne me suis pas embêté à expérimenter entre 2 Macs, j'ai (en tant que macomaniac) simplement créé un dossier BROL que j'ai localisé dans /Users/Shared (= le dossier Partagé des Utilisateurs : càd. un dossier destiné au partage entre utilisateurs d'un même OS). Dans ce dossier, j'ai créé un fichier TextEdit Test. Ce fichier a pour droits de départ (POSIX) : 644 macomaniac staff everyone => macomaniac peut lire/écrire, staff et everyone lire seulement.

Dans une fenêtre d'information du Finder, je rajoute toto (qui est un utilisateur alternatif de mon OS) en écriture : le fichier a désormais pour droits : 644 macomaniac staff everyone (POSIX) + "toto allow write" (ACL).

Je me délogge de la session macomaniac et je me logge dans celle de toto. toto peut écrire au fichier, grâce à l'ACL "toto allow write". Que se passe-t-il à présent si toto sauvegarde son écriture au fichier ? Eh bien ! voici le résultat : 644 toto staff everyone (POSIX) + "toto allow write" (ACL) => on obtient donc une éviction de macomaniac du statut d'user (= propriétaire du fichier en lecture / écriture) et son remplacement par toto comme user-propriétaire en lecture / écriture. Privilège d'écriture redoublée par l'ACL conservée : "toto allow write".

Je me délogge de la session toto et me relogge dans celle de macomaniac. macomaniac peut lire le fichier, mais n'a pas le droit d'y écrire. Car ? Car les droits sont actuellement 644 toto staff everyone (POSIX) + "toto allow write" (ACL). C'est donc simplement en tant que membre du groupe principal staff, ou en tant que membre du groupe secondaire everyone, que macomaniac a accès en lecture au fichier Test. Mais comme ni staff ni everyone n'ont un privilège d'écriture, macomaniac est bloqué en écriture, et n'a accès qu'au mode duplication de fichier => le fichier dupliqué sera alors sa propriété, et il pourra ensuite opérer un remplacement du fichier Test possédé par toto. L'ACL "toto allow write" étant héritée par le duplicata, on récupèrera la situation de départ : 644 macomaniac staff everyone (POSIX) + "toto allow write" (ACL) => toto pourra écrire au fichier dans sa session, mais dès qu'il sauvegardera son écriture, on aura donc derechef un état de droits modifié : 644 toto staff everyone (POSIX) + "toto allow write" (ACL) => macomaniac dans sa session va donc être de nouveau coincé, car non-propriétaire du fichier Test.

--------------------
J'entrevois 2 solutions à ce problème (à part une extra ACL "macomaniac allow write" qu'il faudrait répéter sur tout nouveau fichier créé - comme il faut le faire d'ailleurs en ce qui concerne l'ACL de toto) :

- a) la solution par un cron => un service temporalisé qui, toutes les 5 minutes (disons) rétablirait récursivement (par un chown) sur le dossier partagé BROL la propriété d'user à macomaniac (ce qui n'oblitèrerait pas l'ACL "toto allow write" mais rétablirait périodiquement macomaniac comme user de Test). Ce type de solution marche, mais (personnellement) je la trouve assez « bestiale », car c'est une solution de « rattrapage en aval » récurrent (user => macomaniac) d'une dégradation de droits tout aussi récurrente en amont (user => toto). Ce type de « rattrapage temporel » me paraît une solution « laide » (intellectuellement parlant), quoique (j'ai testé) elle marche, bien sûr...

- b) la solution par l'umask => cette solution a toujours eu ma faveur (intellectuelle), car c'est une solution par l'amont (établissement à l'ouverture par une action de launchd). Petit topo explicatif : l'umask est une abrévation pour user_mask (masque d'utilisateur). Il s'agit d'une condition restrictive, chargée par le processus launchd au déploiement du Système (donc avant toute ouverture de session d'utilisateur), qui soustrait a priori par défaut la valeur octale 022 aux permissions des dossiers et des fichiers créés par tout utilisateur de l'OS par une application quelconque. Sur un absolu possible de 777 pour un dossier (drwxrwxrwx user staff everyone), on obtient donc le default a priori 755 (drwxr-xr-x user staff everyone) ; et sur un absolu de 666 pour un fichier non exécutable (-rw-rw-rw- user staff everyone), on obtient le default a priori 644 (-rw-r--r-- user staff everyone).

Il suffit donc de modifier la valeur default 022 de l'umask en 002 et en conséquence le processus launchd conditionnera a priori toute création d'utilisateur de dossier à avoir les permissions 775 (drwxrwxr-x user staff everyone) et toute création de fichier non exécutable à avoir les permissions 664 (-rw-rw-r-- user staff everyone). Vous voyez en quoi c'est une solution ? Tout membre du groupe staff aura a priori une permission POSIX d'écriture sur tout fichier créé par tout utilisateur (je néglige ici les dossiers). Si je reprends mon descriptif premier : le fichier Test au départ serait donc en 664 macomaniac staff everyone => pas besoin d'accorder une ACL à toto, car en tant que membre de staff il a a priori la permission d'écrire au fichier dans sa session. Que va-t-il se passer quand il enregistrera ? Le fichier Test va être viré à : 664 toto staff everyone. Lorsque macomaniac va l'ouvrir dans sa session, en tant que membre de staff en permission d'écriture, il va pouvoir écrire au fichier directement, et lorsqu'il enregistrera, le fichier sera viré à : 664 macomaniac staff everyone. Grâce au groupe staff en permission d'écriture, alternativement les users qui en sont membres en tant qu'ayant comptes (dans cet OS ou dans celui d'un autre Mac, de par l'identité nominale de groupe = « staff ») ont une permission directe d'écriture => peu importe alors qui est provisoirement le propriétaire du fichier, en tant qu'user venant juste de l'enregistrer à son propre nom.

Dans les version d'OS X antérieures à «Yosemite 10.10», il était possible de passer à launchd la valeur qu'on voulait pour l'umask en créant simplement un fichier launchd-user.conf at: /private/etc et en renseignant dedans uniquement :

Bloc de code:
umask nnn
ou nnn pouvait être : 022, 002, 000 selon qu'on voulait propager la permission d'écriture à la création de dossier/fichier d'utilisateur à l'user seul, à staff en surcroît ou carrément à everyone. Apple vissant de plus en plus le fonctionnement du Système d'OS X, ce procédé commode n'est plus honoré : launchd ne charge plus aucune valeur renseignée dans un fichier /private/etc/launchd-user.conf (snif !).

Qu'à cela ne tienne : voici l'alternative valide dans «Yosemite 10.10» & «El Capitan 10.11» => il suffit de passer une commande de la forme suivante dans le «Terminal» :

Bloc de code:
sudo launchctl config user umask nnn
nnn est la valeur de l'umask choisie pour modifier le default 022. Si l'on veut propager a priori à la création d'objets d'utilisateur (dossier/fichier) la permission d'écriture w à staff, alors passer la commande :

Bloc de code:
sudo launchctl config user umask 002
(avec authentification par le mot-de-passe admin à l'aveugle à la demande de password). Petit caveat : l'utilitaire launchctl est appelé pour écrire à l'adresse suivante :
/private/var/db/com.apple.xpc.launchd/config un fichier user.plist. Si le dossier config ne pré-existe pas dans /private/var/db/com.apple.xpc.launchd, le message d'erreur suivant va s'afficher dans le «Terminal» :

Bloc de code:
"Could not write configuration: No such file or Directory"
=> si tel était le cas, commencer par créer ce dossier config par la commande :

Bloc de code:
sudo mkdir -m 755 /private/var/db/com.apple.xpc.launchd/config
et ensuite répéter la commande :

Bloc de code:
sudo launchctl config user umask 002
qui devrait passer comme une lettre à la boîte => un avertissement va s'afficher dans le «Terminal» intimant de re-démarrer le Mac, pour que le fichier user.plist soit pris en compte, ce qui est logique, puisqu'il est destiné à être lu par launchd au chargement du Système (NB. les valeurs écrites dans le fichier user.plist ne correspondent plus aux 022, 002, 000 du fichier classique launchd-user.conf => la commande avec la valeur 000 donne un integer 0 ; la commande avec la valeur 002 donne un integer 2 ; la commande avec la valeur default 022 donne un integer 18).

Après re-démarrage, toute création d'objet de la part de l'utilisateur se servant de quelque application que ce soit (traitement de texte par exemple ou Finder...) donnera lieu à une permission d'écriture supplémentaire pour staff sur ces objets et il n'y aura plus de problèmes lors d'un partage de fichiers en ce qui concerne la permission d'écriture (pour autant, bien sûr, qu'on ait affaire comme ici à un partage entre utilisateurs ayant-comptes utilisant OSX, donc membres de staff a priori).​
 
Dernière édition par un modérateur:
  • J’aime
Réactions: luc1en
Et ben ... ça m'à pas l'air simple du tout :D
J'essaierais dès que je pourrais (présence du MBP de mon collègue) la solution de jean qui m'a l'air tout de même plus simple :p

En tout cas merci de vos aides.
 
Et ben ... ça m'à pas l'air simple du tout :D

J'ai trouvé le problème intrigant, aussi ai-je un peu creusé...
367024_original.gif


Tu as une manière de tester manuellement un équivalent de l'umask 002 (qui s'applique automatiquement, lui, à toute création d'objets d'utilisateur par une application) : tu fais un ⌘I sur un de tes fichiers en « service alterné » dans ton dossier partagé, et tu vires les permissions du groupe staff à lecture / écriture => lorsque tu récupéreras le fichier sauvegardé par ton collègue, tu devrais pouvoir y écrire illico (en tant que membre du groupe staff nanti de la permission d'écriture). Facile, non ?​
 
J'ai trouvé le problème intrigant, aussi ai-je un peu creusé...
367024_original.gif


Tu as une manière de tester manuellement un équivalent de l'umask 002 (qui s'applique automatiquement, lui, à toute création d'objets d'utilisateur par une application) : tu fais un ⌘I sur un de tes fichiers en « service alterné » dans ton dossier partagé, et tu vires les permissions du groupe staff à lecture / écriture => lorsque tu récupéreras le fichier sauvegardé par ton collègue, tu devrais pouvoir y écrire illico (en tant que membre du groupe staff nanti de la permission d'écriture). Facile, non ?​
Salut @macomaniac :coucou:

Il me semble que là on détourne les options de partage en donnant la permission d'écriture à un élément à tous les utilisateurs d'un groupe et non à 2 seules personnes (ce qui me semble-t-il était la demande initiale).
D'un autre coté, la fonction de partage devrait (comme je l'ai testé avec succès) faire le boulot sans bricoler les autorisations.:D
 
Bon, j'ai testé via la description de jeanjd63 :
  • J'arrive à donner les autorisations à MBP d'écrire sur le fichier
  • MBP ouvre le dossier partagé et le fichier, il écrit dessus
  • J'ouvre à mon tour le fichier modifié par MBP et arrive à écrire (via l'autorisation Staff)
  • MBP ouvre ensuite et n'a plus l'autorisation d'écrire. (lorsque je vérifie Cmd+i : son nom n'est plus dans les autorisations)
Il semblerait donc qu'une écriture annule une autorisation (sauf celle de Staff) ...
 
Peux-tu lister les caractéristiques du dossier et de son contenu, comme je l'ai fait post #6 ?
 
J'ai fait le même constat que Wolf.

La raison est simple : quand toto enregistre ce qu'il a écrit au fichier Test, il vire par là l'user de ce fichier à toto. Lorsque macomaniac (ou jean) récupère donc ce fichier, il a pour droits POSIX : 644 aka -rw-r-r- toto staff everyone. Plus l'ACE "toto allow write" (pour ce qui nous importe ici) que l'extension du droit de partage sur le dossier aux éléments inclus a greffé dans l'ACL du fichier Test.

À examiner cette situation des droits, il est clair que nulle part macomaniac (ou jean) n'a de permission d'écrire au fichier Test récupéré, puique macomaniac (ou jean) n'est plus actuellement l'user du fichier ; que, membre du groupe staff ou de everyone, il n'a par là qu'une permission de lecture au fichier (de par l'umask 022 que launchd inflige par défaut à tout objet d'utilisateur à sa création) ; et qu'a priori aucune ACE dans le fichier d'ACL de Test ne lui accorde un privilège de type "macomaniac allow write" (ou "jean allow write").

C'est en partant de cette situation de blocage de Wolf que j'ai répétée ce matin, que j'ai été conduit à « creuser » des procédés de contournement. Il s'ensuit aussi de ce qui précède que je ne conçois en aucune façon pour quelles raisons, chez toi, jean pourrait écrire au fichier après que toto, par sa sauvegarde d'écriture à ce fichier, se soit instauré user du fichier Test.
 
Je viens de refaire le Test et 3 lecture/écriture depuis 2 mac # et je confirme.
Les 2 utilisateurs peuvent bien lire et écrire sur le fichier depuis 2 mac différents.
Utilisateur A sur ordinateur A crée le fichier Test
Partage fait sur ordinateur A pour utilisateur B présent sur ordinateur A et B
Utilisateur B sur ordinateur B peut lire et modifier le fichier Test sur ordinateur A.
Utilisateur A sur ordinateur A peut lire et modifier le fichier Test sur ordinateur A.
 
Je viens de refaire le Test et 3 lecture/écriture depuis 2 mac # et je confirme.
Les 2 utilisateurs peuvent bien lire et écrire sur le fichier depuis 2 mac différents.
Utilisateur A sur ordinateur A crée le fichier Test
Partage fait sur ordinateur A pour utilisateur B présent sur ordinateur A et B
Utilisateur B sur ordinateur B peut lire et modifier le fichier Test sur ordinateur A.
Utilisateur A sur ordinateur A peut lire et modifier le fichier Test sur ordinateur A.

Chez moi l'utilisateur B ne possède pas de profil sur mon iMac.
C'est peut-être la raison ?
 
Je ne confirme pas, Jean

MacBook Pro 17, «El Capitan 10.11.4». Utilisateurs : maco (501), toto.
MacBook Pro 15, «El Capitan 10.11.4». Utilisateur unique : toto (501).

maco crée un fichier Test.txt dans /Shared/BROL du MBP 17. Il partage le dossier BROL avec toto. Il étend ce partage aux éléments inclus dans BROL => Test.txt

toto, depuis le MBP 15 se connecte au MBP 17 et à accès à son dossier partagé BROL. toto ouvre le fichier Test.txt et écrit, puis sauvegarde son écriture.

maco reprend du service dans sa session du MBP 17 et ouvre le fichier Test.txt modifié et sauvegardé par toto (at: /Shared/BROL) de son Mac. À la première tentative d'écriture au fichier, le panneau suivant se démasque :

482970_original.png

Un ⌘I sur le fichier avère que le propriétaire (en lecture / écriture) est bien actuellement toto (suite à sa sauvegarde précédente de son écriture au fichier). Donc maco n'a plus le droit d'écriture, car il n'est plus l'user. Non plus qu'en tant que membre de staff ni de everyone, qui sont en lecture seule. Comment pourrait-il écrire alors à Test.txt ? Je ne vois qu'une ACE qui lui accorderait un "maco allow write", mais d'où viendrait-elle ? L'action graphique de Partage a accordé une ACE à toto sur le fichier Test.txt, pas à maco qui en était l'user en tant que son créateur au départ.

Avant que toto n'écrive ni ne sauvegarde au fichier /Shared/BROL/Test.txt voici ce qu'on obtient :
Bloc de code:
MacBook Pro:~ maco$ ls -le /Users/Shared/BROL/Test.txt
-rw-r--r--@ 1 maco  staff  58 25 mar 17:16 /Users/Shared/BROL/Test.txt
0: user:toto allow read,write,append,readattr,writeattr,readextattr,writeextatt
=> maco est bien l'user en rw (POSIX) et toto bénéficie d'un "toto allow ..,write" dans l'ACE qui le concerne. Donc maco peut écrire à Test.txt en tant qu'user et toto peut écrire à Test.txt grâce à l'ACE "toto allow write".

Après que toto ait, depuis le MBP 15, écrit et sauvegardé au fichier /Shared/BROL/Test.txt du MBP 17, voici ce qu'on obtient :
Bloc de code:
MacBook Pro:~ maco$ ls -le /Users/Shared/BROL/Test.txt
-rw-r--r--@ 1 toto  staff  67 25 mar 17:17 /Users/Shared/BROL/Test.txt
=> maco n'est plus l'user, c'est toto qui l'est devenu en rw (POSIX). Et l'ACE au bénéfice de toto a disparu. Donc maco ne peut pas écrire à Test.txt car il n'est plus l'user et toto le peut car il l'est devenu. Tout se passe, pour toto, comme si l'usage de sa permission d'écriture au fichier qui dépendait d'une ACE avait été convertie en permission d'écriture POSIX à la sauvegarde du fichier.

☞ comme tu le vois, je n'arrive ni à répéter ton expérience (maintien d'une capacité bilatérale d'écriture au fichier partagé) ; ni à concevoir sa possibilité théorique.