Partager un dossier en écriture entre deux sessions

Bonjour,


Sous macOS High Sierra, je souhaite partager en écriture un dossier, ses sous dossiers et les documents qu'ils contiennent entre deux sessions utilisateurs. Cela implique que chaque utilisateur puisse :

  • y créer de nouveaux dossiers/fichiers ou supprimer les dossiers/fichiers existants
  • ouvrir et modifier l'ensemble des dossiers et fichiers qui s'y trouvent y compris ceux créés par l'autre utilisateur


J'utilise pour cela le dossier "Partagé". J'ai modifié les droits pour que les deux utilisateurs aient accès au dossier en lecture/écriture et j'ai propagé ces droits via "Appliquer aux éléments inclus". Cela fonctionne bien pour tous les fichiers et dossiers existants : chaque utilisateur peut les modifier et les enregistrer.


Par contre, lorsqu'un utilisateur crée un nouveau fichier ou dossier, l'autre n'a plus les droits pour le modifier. Il faudrait à chaque fois, propager les droits du dossier "Partagé" via la fonction "Appliquer aux éléments inclus", ce qui n'est pas viable au quotidien.


Existe t il un moyen pour faire en sorte qu'au sein du dossier "Partagé" il soit possible de modifier un fichier créé par un autre utilisateur ?

A noter que j'ai également tenté d'utiliser la fonction de "partage de fichiers" dans "préférences système" sans succès, le problème étant identique.


Merci par avance

MacBook Pro, macOS High Sierra (10.13.6)

Publiée le 28 déc. 2018 à 07h15

Répondre
34 réponses

Le 28 déc. 2018 à 13h02 en réponse à -jm-

Bonjour jm,

En lisant les divers docs de Apple consacrés au partage de fichiers, il appert qu'il n'y a pas de solution.

Par exemple, dans Partager des fichiers avec les autres utilisateurs de votre Mac - Assistance Apple

on peut lire :

Les fichiers se trouvant dans le dossier Public ou Partagés d’un utilisateur peuvent être lus par tous les utilisateurs du Mac, mais modifiés et supprimés uniquement par le propriétaire du fichier. Si vous voulez autoriser d’autres utilisateurs à modifier ces fichiers, vous devez modifier les autorisations de fichier.

Une solution bancale est... de passer par iCloud ou Dropbox ou ce genre de "nuage" avec les mêmes identifiants de connexion pour les différents utilisateurs.

Le 1 janv. 2019 à 13h52 en réponse à MVCo

Bonjour,

J'ai tenté de mon côté de trouver une solution avec la notion de groupe. Voici ce à quoi j'aboutis :


Au sein du dossier "Partagé", j'ai nommé le répertoire dont les documents doivent être partagés en écriture : "Commun"


Dans Préférences système > Utilisateur et groupes, créer un groupe "Gr_commun" qui contient les deux utilisateurs.


Dans le terminal, lancer la commande :

chown -R :Gr_commun /Users/Shared/Commun

avec

  • -R > pour la récursivité sur l'ensemble des fichiers et répertoires de l’arborescence
  • :Gr_commun > pour positionner ce groupe sur l’ensemble des fichiers et répertoires
  • /Users/Shared/Commun > le chemin d'accès au répertoire.

A ce stade, tous les fichiers et dossiers de l’arborescence ont pour groupe « Gr_commun ».


Dans le terminal, lancer la commande :

chmod -R g+w,o= /Users/Shared/Commun

  • -R > pour la récursivité
  • g+w > g : le groupe du fichier ou dossier, +w : ajout du droit en écriture
  • o= > o : les utilisateurs qui ne sont ni le propriétaire ni membres du groupe, = : aucun accès
  • /Users/Shared/Commun > le chemin d'accès au répertoire

A ce stade, tous les fichiers et dossiers de l’arborescence ont pour groupe « Gr_commun » avec des droits en écriture et tous les autres utilisateurs n’ont aucun accès sur ces fichiers et dossiers.


Ceci est cependant insuffisant car lorsqu’un utilisateur modifie ou crée un fichier, les droits du groupe sont (parfois !) repositionnés en lecture et car si un utilisateur déplace un fichier dans cette arborescence, le groupe n’est pas le bon.

Il faut donc toujours automatiser le repositionnement périodique de ces droits, soit via une tâche dans la crontab du root, soit via une application en Apple script lancée depuis la session des deux utilisateurs comme détaillé plus haut.

Qu'en dites vous ?


Si ok, ce qui me paraitrait idéal serait de lancer ce programme pour repositionner les droits une seule fois au lancement de la session utilisateur (avec des droits admin voire root pour permettre la modification).

Savez vous si c'est possible ?


Et bien sûr tous mes voeux pour la nouvelle année 🙂

Le 29 déc. 2018 à 05h15 en réponse à jeanjd63

Merci : c'est fait.


J'ai finalement "fabriqué" autre chose : un script d'action de dossier basé également sur la commande "chmod -R a+w ".

Ça a l'avantage (à mon avis) de ne modifier les permissions que lors de l'ajout d'un ou plusieurs éléments (dossiers ou fichiers) dans le dossier cible. Et c'est facilement désactivable : juste une case à cocher.

Bonne journée.

Le 30 déc. 2018 à 04h09 en réponse à MVCo

Sauf que ta procédure est à mon avis un peu restrictive.

En effet elle va très bien fonctionner si c'est le créateur du dossier initial qui l'exécute et que les fichiers et répertoires posant problème de partage lui appartiennent.

Sinon elle va se vautrer sur l'absence d'autorisation.

Il faudra donc la mettre accessible pour tous les utilisateurs et lui donner les droits sudo.


Et là ça va demander le mot de passe et je ne sais pas trop comment AppleScript gère cela.


L'avantage de passer par root et cron est que ça fonctionnera dans tous les cas et de façon totalement transparente pour tous les utilisateurs de la machine.🙂

Il est à noter que la procédure cron est paramétrable quand à la fréquence du lancement.


Bon ceci dit, c'est à -jm-, lorsqu'il se réveillera de son hibernation de faire son choix.😁

Le 30 déc. 2018 à 15h59 en réponse à MVCo

Bonjour MVCo et jeanjd63,


Avant tout désolé pour le temps de réponse… Et grand merci à vous deux pour la grande clarté de vos explications et votre réactivité impressionnante !


Concernant la solution chmod via tâche planifiée crontab :

J’ai bien exécuté les commandes et - après quelques péripéties - j’ai bien obtenu le fameux message « installing new crontab ». Et j’ai bien vérifié que cela fonctionne !

Quelques retours à destination de ceux (dont je fais partie) qui ne seraient pas aussi aguerris que nos deux super conseillers :

- le sudo -s doit être exécuté depuis un compte administrateur car il est nécessaire d’avoir les droits pour agir en tant que root

- la commande crontab -l qui liste les tâches installées est intéressante car elle permet de bien valider que la commande a fonctionné (… ou non ...)

- après avoir constaté la bonne installation de la tâche planifiée, il m’a été nécessaire de redémarrer l’ordinateur pour que l’effet de la commande soit effectif (je ne sais pas si c’est standard)

- rigueur sur la syntaxe ! En ligne de commande cela se voit peu et les petites erreurs font perdre du temps…

Et j'aurais une question subsidiaire sur cette technique : y a t il un endroit où il est possible de constater l’exécution de la tâche ?


Concernant la solution chmod via apple script :

J’ai bien créé le script et vérifié que cela fonctionne bien en paramétrant le lancement à l’ouverture de session !

Un retour également :

- lors de l’ajout au lancement la session utilisateur (Préférences système > utilisateurs et groupes), cocher l’option masquer qui évite de voir l’application apparaitre dans la barre de menu.

Et une question subsidiaire : existe t il un moyen pour que l’application lancée soit masquée dans le dock ?


Un grand merci donc pour vos solutions qui vont me permettre de mettre en place ce partage de données en écriture entre sessions (je laisse à chacun le soin de choisir sa technique de préférence).


Pour corser les choses 🙂, sauriez-vous comment réaliser cette opération uniquement pour certains des utilisateurs de l’ordinateur ? Certains fichiers ne doivent potentiellement pas être partagés avec tous les utilisateurs…

Je n’ai pas vu d’options correspondant à ce besoin avec chmod (mais je ne peux garantir avoir tout saisi). Un usage de la notion de groupe ?


Très bonne toute fin d'année

Le 30 déc. 2018 à 22h44 en réponse à -jm-

Hello.


Déjà quelques réponses :

Pour valider la tâche cron, pas besoin de redémarrer le Mac.

Il suffit de patienter la durée du délai demandé.

Pour avoir un suivi, tu peux dans la commande générer une trace.

Par contre avec 1 minute de délai ça va faire du monde.

Solution : tous les jours lancer un cron qui va effacer la log de la veille :

Modif pour générer des log :

*/1 * * * * /bin/chmod -vvR a+w /Users/Shared/Test >> /var/log/cron_chmod

Donc on va écrire en ajout sur le fichier cron_chmod dans le répertoire "classique" des logs /var/log.

Tu obtiendras une ligne de ce type par fichier modifié :

nom_fichier: 0100644 [-rw-r--r-- ] -> 0100666 [-rw-rw-rw- ]

nom : anciennes autorisations -> nouvelles autorisations.

certes pas très lisible, mais déjà suffisant.


Par contre il va falloir faire du ménage dans ces logs.

Je te propose un grand ménage hebdomadaire ou mensuel.

Cela implique une nouvelle ligne à ajouter au crontab :

pour un ménage mensuel :

@monthly >/var/log/cron_chmod

ou hebdo

@weekly >/var/log/cron_chmod


Pour avoir plein d'informations sur crontab, tu peux dans le terminal taper la commande man(uel)

man 5 crontab


Quand tu ne veux supprimer une tache, rien de plus simple

crontab -e

puis tu te positionnes sur la ligne à supprimer et tu tapes dd puis tu quittes en sauvegardant :

:wq


Si tu souhaites supprimer l'ensemble de la crontab :

déja tu peux vérifier le contenu :

crontab -l

puis :

contab -r


Pour ta dernière question concernant l'aspect restrictif des accès, il faut creuser.😁

Soit tu restes sur une organisation "classique" et tu crées 2 répertoires de partage.

Soit tu fais joujou avec les groupes, mais là je te laisse la main.😁


Cela va impliquer de créer différents groupes pour tes utilisateurs et de gérer des autorisations de type chmod g+w mais bonjour la gestion.

Le 31 déc. 2018 à 03h44 en réponse à -jm-

Re-bonjour,


Je passe à ta question finale à laquelle je ne sais pas répondre directement mais par une astuce : jouer sur la visibilité du dossier partagé que je vais continuer à nommer Partage_Complet ou d'un de ses sous-dossiers.

Pour mettre en œuvre l'astuce que j'ai en tête, j'ai besoin d'avoir quelques précisions :

- quand un utilisateur ouvre sa session sur ton ordi est-ce que c'est par permutation (la session de l'utilisateur précédent reste ouverte) ou après fermeture de la session de l'utilisateur précédent ?

- il faudrait que les dossiers et fichiers qui ne doivent pas être partagés avec tous les utilisateurs soient tous situés dans un même dossier : faisable, non ?


Je te proposerai l'astuce à partir de 3 utilisateurs A, B et C, ensuite tu pourras adapter à 4 ou 5 ou 23 utilisateurs !

- A, B et C ont l'accès complet en lecture/écriture au dossier ABC_Partage situé dans le dossier Partage_Complet

- A et B ont l'accès complet en lecture/écriture au dossier AB_Partage situé dans le dossier Partage_Complet mais ce dossier est invisible aux yeux de C

Le 28 déc. 2018 à 07h51 en réponse à Fontom

Bonjour Fontom,

Il me semble que ça ne fonctionne pas justement : le partage de fichiers permet au maximum de copier des fichiers, de rajouter des fichiers, mais pas de les modifier directement. 😟

Voir ceci :

Lecture et écriture : L’utilisateur peut visualiser et copier les fichiers du dossier et peut également copier d’autres fichiers dans ce dossier.

Le 29 déc. 2018 à 03h16 en réponse à jeanjd63

Bonjour,


Très intéressant et ç'a l'air de fonctionner comme il se doit.

Quelques questions toutefois :

- faut-il désactiver le SIP avant de programmer ce mécanisme ? (chez moi, je l'ai désactivé donc je ne sais pas si c'est nécessaire ou pas)

- comment modifier la périodicité voire supprimer ce mécanisme par la suite ?

- je cherche vainement dans la Console la trace de ce mécanisme : je dois sans doute mal chercher ?

Bonne journée

Le 30 déc. 2018 à 05h47 en réponse à jeanjd63

C'est bien vu sauf que...

Il suffit que ce soit celui qui a créé le dossier parent Partage_Complet qui exécute l'applet la 1ère fois.

Ensuite, selon la fréquence du mécanisme, ce que vous dites au sujet de nouveaux éléments créés tient ou ne tient pas.

Si la fréquence choisie est de 15 min, il y a effectivement un risque qu'un dossier ou fichier n'est pas vu ses droits modifiés par le script avant que l'autre utilisateur ne veuille s'en servir.

Si la périodicité est de l'ordre de 30 s, il y a peu de chances pour que cela se produise.


NB Apple Script sait gérer l'authentification par mot de passe mais ça ne serait pas bien malin de demander l'authentification de l'utilisateur toutes les 30 s ! Il y aurait possibilité d'enregistrer le mot de passe de l'utilisateur mais c'est un truc que je me refuse de faire.

NB2 Je ne doute pas que l'on puisse modifier la fréquence du déclenchement de la procédure cron : je vous l'avais d'ailleurs demandé mais vous ne m'avez pas répondu. Comment passe-t-on à 10 s par exemple ? Comment la désactive-t-on temporairement si besoin est ?


Mais merci d'avoir évoqué cet éventuel écueil et bonne fin d'année.

Le 30 déc. 2018 à 10h05 en réponse à jeanjd63

Oui, chacun son truc.

Puisque vous ne répondiez toujours pas aux questions que je vous ai posées à 2 reprises, je suis allé fouiller sur Internet : je n'ai pas trouvé comment planifier un crontab pour qu'il s'exécute toutes les 20 s par exemple (ça semble être toujours un nombre entier de minutes) et je n'ai rien trouvé de très simple pour arrêter ce genre de tâche (encore moins pour la suspendre provisoirement) ou pour la modifier intuitivement.

Pas grave : je vais survivre et je vais surtout continuer avec mes scripts ! 😎

Cette discussion a été fermée par le système ou l’équipe de la communauté. Vous pouvez voter pour les publications que vous jugez utiles ou effectuer des recherches dans la communauté pour trouver des réponses supplémentaires.

Partager un dossier en écriture entre deux sessions

Bienvenue dans la Communauté d’assistance Apple
Un forum où les clients Apple s’entraident avec leurs produits. Faites vos premiers pas avec votre compte Apple.