Créer une dropbox qui gère le partage et permissions

ccciolll

Membre expert
Club iGen
Bonjour,

Voilà, je souhaite créer une dropbox, ou drop zone, ou appelez ça comme vous voudrez, en local sur mon mac, dans la quelle tout dossier créé ou glissé par mes soins prenne automatiquement les droits "Lecture et Ecriture autorisées" pour tout utilisateur.

Ceci afin qu'une fois copiés sur le serveur que je partage avec d'autres, ces fichiers soient utilisables et, surtout, modifiables par mes collègues.

Pour des raisons de performance, je ne souhaite pas travailler directement sur le serveur (et quand bien même, quand je m'y connecte, les fichiers que je crée sont quand-même par défaut en lecture seule pour autre que moi).
 
Il doit y avoir moyen de créer un AppleScript que fasse ce changement de droits par un "do shellscript..."

Puis attacher ce script au dossier que tu nommeras dropzone (en activant les scripts de dossier)

Ainsi pour chaque fichier glissé dans ce dossier, l'AppleScript sera executé et le fichier adoptera les droits en lecture/ecriture souhaités

Voilà pour la théorie. Je laisse les spécialistes en AppleScript et script Terminal te donner la syntaxe exacte des commandes à Applescripter
 
Peut-être avec Automator ?
 
je souhaite créer une dropbox, ou drop zone, ou appelez ça comme vous voudrez, en local sur mon mac

Ouais, un répertoire partagé... (pas besoin d'utiliser des mots du 21e siècle pour des concepts du 20e, DropBox c'est autre chose, c'est une synchronisation entre le dépôt et les appareils).
 
En fait, un simple script qui tourne toutes les minutes et ça sera bon. On peut lancer ce script avec cron ou launchd.

En plus sophistiqué il faudrait faire une application qui soit activée par les événements du système de fichiers (comme fsevents) pour que l'action soit immédiate et réalisée une seule fois.
 
Salut ccciolll.

En fait, un simple script qui tourne toutes les minutes et ça sera bon. On peut lancer ce script avec cron...
+1 pour la cron avec un chmod

--> application par l'ilote de service macomaniac :D :​


Tu ouvres une fenêtre du «Terminal» et tu fais successivement (par exemple) :



  1. D'abord :

    Bloc de code:
    sudo mkdir /"Shared Items"/libre_espace


    et ↩︎ + password admin + ↩︎ --> tu viens de créer un dossier intitulé libre_espace dans le répertoire Éléments partagés à la racine de ton OS. Évidemment, créé par le Système, le dossier est pour l'instant en droits restreints :

    Bloc de code:
    drwxr-xr-x  2 root  wheel

    càd. qu'aucun utilisateur autre que root n'y a de droits d'écriture, mais on s'en fiche pour l'instant, ça va servir de pierre de touche ultérieurement.

    ❊


  2. Ensuite :

    Bloc de code:
    touch ~/Documents/maj-droits.sh

    et ↩︎ --> tu viens de créer un fichier basique de type 'shell script' intitulé 'maj-droits.sh' dans le dossier 'Documents' de ton répertoire d'utilisateur admin (dont je supposerai que son nom abrégé est ccciolll).

    ✻


  3. Tu vas graphiquement (pour te faciliter la vie) audit fichier 'maj-droits.sh' et tu fais un ctrl_clic dessus pour l'ouvrir avec «TextEdit». Dans sa fenêtre vide, tu fais un copier-coller de :

    Bloc de code:
    #!/bin/bash
    /usr/sbin/chown -R ccciolll:staff /"Shared Items"/libre_espace
    chmod -R 777 /"Shared Items"/libre_espace

    et tu sauvegardes le fichier, qui est dans le format 'texte' qui va bien.

    Tu as renseigné dans le 'shell script' 2 commande récursives successives : l'une ('chown') établissant les accédants au dossier libre_espace à : ccciolll staff everyone ; l'autre ('chmod') les permissions de ces accédants à 777 en valeur octale, càd. à rwx (read/write/execute = lire/écrire/exécuter) pour l'accédant : propriétaire = ccciolll, l'accédant : groupe = staff (tous les 'ayant-comptes') et l'accédant : everyone = other (les 'touristes' de l'OS).

    ✽


  4. Par contre, ce qui ne va pas bien à ce stade, c'est les droits du fichier : 'maj-droits.sh', car ils sont du type :

    Bloc de code:
    -rw-rw-r--  ccciolll   staff

    c'est-à-dire qu'il manque l'executive bit = x condition sine qua non pour que le fichier soit exécutable. Qu'à cela ne tienne, tu reviens à la fenêtre du «Terminal» et tu saisis :

    Bloc de code:
    sudo chmod 777 ~/Documents/maj-droits.sh

    et ↩︎ (avec password admin, si tu as traîné au-delà des 5' où tu peux continuer d'être sudoer sans mot-de-passe après une première authentification en ligne de commande). Désormais, les droits de ton fichier sont :

    Bloc de code:
    -rwxrwxrwx   ccciolll  staff

    et tout le monde est content (toi y compris, puisque je t'intime de l'être :D).


    ✼


  5. Maintenant, tu télécharges et installes l'application gratuite : ☞CronniX 3.0.2☜ (au cas où tu ne l'as pas déjà), laquelle offre une GUI commode pour établir des crons (commandes récurrentes, à tâche et à périodicité réglable, qui vont s'effectuer en toile de fond une fois l'OS démarré). Tu lances l'application qui par défaut ouvre une fenêtre de tâches référencée : «Cron pour l'utilisateur : ccciolll». Comme il est plus sûr d'avoir un cron qui va tourner imperturbablement aussi longtemps que ton OS est démarré sans qu'il dépende de ta seule session admin ouverte (qu'il puisse donc tourner même si tu fermes ta session), mais surtout comme les commandes 'chown' et 'chmod' impliquent un initiataire root pour s'exécuter ipso facto, tu vas à la barre de menus supérieure de «CronniX» et tu sélectionnes : 'Ouvrir le cron du Système', ce qui vire la fenêtre de tâches à : '«Cron pour l'utilisateur : system».


    ❉


  6. Maintenant, tu t'inspires de cette capture :


    308756_original.png

    --> Tu choisis 'Nouveau' (1), tu choisis 'Simple' (2), tu coches toutes les cases pour avoir des * partout (3), tu copies-colles : /Users/ccciolll/Documents/maj-droits.sh dans la fenêtre de commande (4) ou tu navigues graphiquement à ton fichier 'maj-droits.sh' contenu dans le répertoire de tes 'Documents' (4bis) et enfin tu presses le bouton 'Nouveau' (5).

    ✲


  7. Il ne te reste plus, dans la barre d'outils de la GUI de «CronniX», qu'à presser le bouton 'Enregistrer' (en t'authentifiant pour cela par ton mot-de-passe admin - car tu instaures une commande_cron qui va être initiée par root).

    ❋


  8. En conséquence de ce petit montage --> toutes les minutes aussi longtemps que ton OS est démarré et quelle que soit la session ouverte (même si la tienne est fermée), un cron_root va s'exécuter rétablissant de manière récursive les accédants au dossier /Éléments partagés/libre-espace et à tout ce qu'il contient actuellement à : ccciolll staff everyone (par la commande chown du 'shell script'), et rétablissant de manière récursive les permissions de ces accédants au dossier /Éléments partagés/libre-espace et à tout ce qu'il contient actuellement à : drwxrwxrwx pour les dossiers, et à : -rwxrwxrwx pour les fichiers (par la commande chmod du 'shell script') - soit au complet :

    Bloc de code:
    drwxrwxrwx   ccciolll    staff  everyone
    -rwxrwxrwx   ccciolll    staff  everyone


    ❇︎

☞ élémentaire mon cher Watson ccciolll :D (testé expérimentalement avec succès sur mon MacBook Pro, OS : «Mavericks 10.9.2»). Après tout, si j'avais envie de changer à 777 pour tous les droits d'éléments dans mon OS, il me suffirait d'aller promener le chien iceux dans le dossier destinataire du cron le temps pour l'horloge du Mac de sauter une minute :D.

[NB. Évidemment, il te faut remplacer toutes les occurrences de 'ccciolll' supposé ton nom abrégé d'utilisateur admin par ton vrai nom d'utilisateur en minuscules. De surcroît, l'intitulé du dossier partagé : libre_espace et sa localisation at : /"Shared Items" sont bien entendu modifiables à volonté --> il suffit de remplacer les occurrences d'intitulé et de localisation dans les commandes successives par celles actuellement en place en cas de changement.]
 
Dernière édition par un modérateur:
WA !

J'en ai les bras coupés !

Quel tuto, mais quel tuto !
 
Salut, je viens donc d'essayer de suivre le tuto.

à priori, le premier code fourni ne fonctionne pas, il met le message d'erreur suivant
Bloc de code:
mkdir: /Shared Items: No such file or directory

Mais qu'à cela ne tienne, j'ai repris la commande sudo mkdir, puis j'ai clic-glissé un dossier que je voyais sur mon bureau pour avoir le bon chemin (puisque je voulais ce dossier sur mon bureau, de toutes façons).

Tout semble avoir fonctionné jusqu'à Cronnix (j'ai changé les noms là où il le fallait, ton explication est bien faite)
Arrivé là, bien que je clique sur Fichier > Ouvrir le cron du système, il reste affiché Cron pour l'utilisateur : ccciolll Cron courant dans la fenêtre de cronnix.
Diable !

---------- Nouveau message ajouté à 11h43 ---------- Le message précédent a été envoyé à 11h35 ----------

Néanmoins, j'ai fait le test sans cron system, ça semble fonctionner (tout ce que j'y ai mis est passé en droits 777).

En revanche, petite chose curieuse, quand je veux copier des éléments dans le dossier créé par terminal, il me demande l'authentification.
 
à priori, le premier code fourni ne fonctionne pas, il met le message d'erreur suivant
Bloc de code:
mkdir: /Shared Items: No such file or directory

Mais qu'à cela ne tienne, j'ai repris la commande sudo mkdir, puis j'ai clic-glissé un dossier que je voyais sur mon bureau pour avoir le bon chemin (puisque je voulais ce dossier sur mon bureau, de toutes façons).

Tout semble avoir fonctionné jusqu'à Cronnix (j'ai changé les noms là où il le fallait, ton explication est bien faite)
Arrivé là, bien que je clique sur Fichier > Ouvrir le cron du système, il reste affiché Cron pour l'utilisateur : ccciolll Cron courant dans la fenêtre de cronnix.
Diable !

---------- Nouveau message ajouté à 11h43 ---------- Le message précédent a été envoyé à 11h35 ----------

Néanmoins, j'ai fait le test sans cron system, ça semble fonctionner (tout ce que j'y ai mis est passé en droits 777).

En revanche, petite chose curieuse, quand je veux copier des éléments dans le dossier créé par terminal, il me demande l'authentification.

Whaaah! ☝︎:D Il y a 'torts partagés' je pense -->


    • en ce qui me concerne, j'avais compris que tu voulais créer un dossier partageable avec d'autres utilisateurs dans un endroit accessible de ton OS, de telle manière que tous les éléments que quiconque y logerait prennent automatiquement des droits lecture/écriture pour tous et pas seulement pour le propriétaire-créateur. D'où mon idée de créer ce dossier partagé dans le répertoire accessible à tous 'Éléments partagés' et de créer un cron_Système (et pas simplement un cron_utilisateur) afin que l'édition périodique des droits des éléments inclus s'opère en toile de fond que ta session propre soit ouverte ou non, et que les commandes chown et chmod soient honorées dans un espace de l'OS qui n'est pas celui de l'utilisateur mais celui du Système (espace-racine)

    • Mais ce n'est pas ce que tu veux. Tu veux simplement à ton propre usage exclusif et sur ton Bureau un dossier à fonction de conversion automatique des permissions des fichiers ou dossiers que tu crées, qui par défaut sont en lecture/écriture seulement pour toi le propriétaire, mais en lecture seule pour le groupe (= staff) et le tout-venant (= everyone) - conversion automatique qui les virerait à lecture/écriture à tous les étages (donc aussi pour le groupe et le tout-venant), ce qui te permettrait de les copier directo sur un Serveur où les permissions du groupe et du tout-venant resteraient à lecture/écriture et leur permettraient d'être manipulés à volonté par quiconque.

    • Bref, ce que tu appelles une 'dropbox' est un dossier 'drop_zone' changeur de permissions à --> lecture-écriture à tous les étages.

    --------------------​

    • En ce qui te concerne, tu sembles avoir cafouillé sur plusieurs points, dont le 1er est que lorsque dans une ligne de commande tu as à gérer un 'objet' dont l'intitulé se compose d'au moins 2 mots séparés par un espace vide, comme Shared Items, tu dois toujours ajouter à l'énoncé d'un tel intitulé des 'indicateurs' qui demandent au Système de traiter l'énoncé 'comme un seul bloc' désignant un objet unique. Ainsi, si tu rédiges une commande :

      Bloc de code:
      sudo mkdir /[COLOR="Red"]Shared Items[/COLOR]/brol

      c'est invalide, car l'espace vide dans Shared Items casse la ligne d'énoncé et le Système ne 'voit' pas que 'Shared Items' = un objet unique, par suite aucun dossier brol n'est créé dans Shared Items car le binaire 'mkdir' est incapable de 'trouver' le répertoire d'appartenance ; par contre si tu écrit :

      Bloc de code:
      sudo mkdir /[COLOR="Red"]"[/COLOR]Shared Items[COLOR="Red"]"[/COLOR]/brol

      c'est valide, car les "" solidarisent les 2 mots du titre en une désignation d'objet unique, par suite un dossier brol est créé dans Shared Items qui est trouvé comme répertoire. Ou encore si tu écris :

      Bloc de code:
      sudo mkdir /Shared[COLOR="Red"]\[/COLOR] Items/brol

      car l'anti_slash joue le rôle d'indicateur de neutralisation de l'espace vide qui le suit.

    • Par ailleurs, je ne vois pas pourquoi tu ne peux pas virer la GUI de «CronniX» à l'option :

      cron pour l'utilisateur :
      system
      cron courant

      Il te suffit pour cela d'aller au menu 'Fichier' et de sélectionner le sous-menu : Ouvrir le cron du système.

    • En dernier lieu, pour un dossier que tu veux créer sur ton Bureau et qui ne servira qu'à toi, tu te contentes de le faire graphiquement par le Finder, tu n'as pas besoin d'un mkdir dans le «Terminal». D'ailleurs, quand tu fais un mkdir dans le «Terminal», si tu te contentes de faire un glisser-déposer d'un dossier déjà existant en cible de l'invocation, tu vas te heurter à un 'file already exists', puisque tu n'as pas énoncé d'intitulé de dossier à créer mais que tu t'es contenté de renseigner l'adresse d'un dossier existant.


      ♤


Enfin, peu importe ce cafouillage venant de la rencontre d'idées hétérogènes --> tu as 2 solutions pour avoir sous la main des fichiers-dossiers créés par toi avec permissions 'totales pour tous' :


  1. La solution cron activant à chaque minute un shell_script d'édition des droits ciblé sur un dossier précis. Alors tu peux raccourcir la procédure -->

    • Tu crées graphiquement un dossier brol sur ton Bureau, qui va être en droits :

      Bloc de code:
      drwxr-xr-x  ccciolll   staff   everyone

      te permettant tous les glisser-déposer que tu veux dedans.

    • Tu ouvres avec «TextEdit » ton fichier 'maj-droits.sh' qui est dans tes documents et tu l'édites ainsi :

      Bloc de code:
      #!/bin/bash
      /usr/sbin/chown -R ccciolll:staff /Users/ccciolll/Desktop/brol
      chmod -R 777 /Users/ccciolll/Desktop/brol

      et tu le sauvegardes. Normalement, il a toujours l'executive_bit qui lui permet d'être exécutable.

    • Comme ton cron, qui est un cron pour l'utilisateur : ccciolll (ce qui suffit dans l'usage que tu veux ici), pointe toujours au fichier 'maj-droits.sh' de tes documents, normalement le dossier brol sur ton Bureau hérite désormais du protocole d'édition des droits périodiques.

    • Comme tu l'as compris, si ccciolll n'est pas ton nom d'utilisateur, tu remplaces partout ce nom par le vrai. Et si tu veux nommer ton dossier 'drop_zone' autrement que brol, libre à toi, il te suffit d'éditer les 2 terminaisons de commande du shell_script en remplaçant brol par l'intitulé de ton dossier.


      ♧

  2. La solution umask qui, à mon avis, est la plus adaptée à tes desiderata (car la précédente équivaut à passer un plat au micro-onde avant de le ressortir consommable - ce qui demande d'attendre le saut d'une minute à l'horloge du Mac :D)

    • Par défaut, OSX impose un filtre dit umask ('masque de l'utilisateur') au maximum théorique de permissions que peut porter un dossier ou un fichier lorsqu'un utilisateur le crée. Ce maximum théorique est pour un dossier = lecture/écriture/exécution pour le propriétaire, le groupe et le tout-venant ('exécution' signifiant la possibilité d'exécuter l'entrée à l'espace du répertoire, préalable à pouvoir lire cet espace et écrire cet espace). Cela se calcule en valeur octale, où r (read) = 4, w (write) = 2 et x (execute) = 1. Donc le maximum de permissions théorique = 4 + 2+ 1 = 7 à la fois pour le propriétaire, le groupe et le tout-venant --> 777. Pour les fichiers qui ne sont pas des exécutables (comme les binaires invoqués en ligne de commande), la permission execute n'a pas de pertinence, donc le maximum théorique de permissions d'un fichier 'texte' est donc de 4 + 2 + 0 = 6 à la fois pour le propriétaire, le groupe et le tout-venant --> 666.

    • Le filtre umask imposé par OSX à la création de tout dossier et de tout fichier est par défaut l'umask : 022 --> ce qui s'interprète ainsi : a priori, la valeur octale 022 est soustraite au maximum théorique de permissions 777 des dossiers, ce qui donne des permissions effectives de 755 ; et au maximum théorique de permissions 666 des fichiers, ce qui donne des permissions effectives de 644. Ce qui s'interprète par ce que tu constates : les dossiers que tu crées sont en lecture/écriture/exécution = 7 pour toi leur propriétaire créateur, mais en 5 seulement = lecture = 4 + exécution (de l'entrée au répertoire) = 1 pour le groupe et le tout-venant --> il y a donc forclosion de la permission d'écriture par l'umask : 022. Et pareil pour les fichiers --> 666 de permissions maximales théoriques - 022 = 644 : le créateur propriétaire peut lire (4) + écrire (2), le groupe et le tout-venant ne peuvent que lire (4).

    • La solution à ton problème s'impose d'elle-même : il s'agit de neutraliser l'umask : 022 pour le ramener à la valeur umask : 000. Pour cela, dans le «Terminal» tu saisis :

      Bloc de code:
      sudo touch /etc/launchd-user.conf

      (à l'action de la commande, une demande de password s'affiche : tu tapes ton mot-de-passe admin à l'aveugle - aucun caractère ne se montrant à la frappe - et tu represses la touche 'Entrée' du clavier) --> tu viens de créer dans le répertoire invisible /private/etc un fichier s'adressant au processus launchd (le processus parent en qualité de 1er des processus extra_kernel) en lui enjoignant de lire au démarrage, avant l'ouverture d'aucune session graphique d'utilisateur, un fichier de configuration de paramètres d'utilisateur. Ce fichier est vide, pour l'instant, mais a les bons droits, càd. :

      Bloc de code:
      -rwr--r-- root  wheel

    • Maintenant, tu télécharges et tu installes ☞TextWrangler☜, superbe logiciel gratuit qui permet l'édition directe de fichiers système sans modification des permissions. Tu le lances, tu demandes 'Ouvrir' au menu 'Fichier', et tu t'inspires du visuel suivant :

      309562_original.png

      Coche la case (1) d'affichage des éléments invisibles, navigue au répertoire private (2), sous-répertoire etc, et descend la liste des fichiers jusqu'au fichier launchd-user.conf vide que tu viens de créer (4). Ouvre-le (5). Saisis uniquement :

      Bloc de code:
      umask 000

      et sauvegarde ton fichier (6). Re-démarre. Désormais, tous les dossiers que tu créeras (toi ou un autre utilisateur de ton Mac, car le paramétrage prévaut pour toute session graphique d'utilisateur de l'OS) seront en 777 en valeur octale (lecture/écriture/exécution à tous les étages d'accédants) et tous les fichiers que tu créeras seront en 666 en valeur octale (lecture/écriture à tous les étages d'accédants) --> ce qui résout ton problème en amont (a priori) là où le dossier 'dropzone' résout le problème en aval (a posteriori).

      ☞ tu peux revenir sur ton paramétrage de l'umask à tout moment, en ré-éditant par «TextWrangler» le fichier /private/etc/launchd-user.conf pour ramener la valeur octale de l'umask à 002 par exemple (seuls toi et le groupe ont des permissions totales, le tout-venant n'a pas droit d'écriture) ; ou tu peux revenir à la valeur par défaut = 022 (tu es seul en permission d'écriture sur les dossiers et fichiers que tu crées). Évidemment, la suppression du fichier launchd-user.conf joue le même rôle de ramener à l'umask : 022 par défaut.


      ♡
 
Dernière édition par un modérateur:
Bonjour,
je déterre le sujet de 2014. :)

il me semble que la commande chown -R ne fonctionne pas, si je comprend bien elle devrait permettre d'ajouter les utilisateurs qui possède les droits au dossier et l'ensemble des sous dossier/fichier ?
puis ensuite la commande chmod -R 777 de modifier les droits de ces utilisateurs ( la ça fonctionne )

Bloc de code: (de ccciolll)
#!/bin/bash
/usr/sbin/chown -R ccciolll:staff /"Shared Items"/libre_espace
chmod -R 777 /"Shared Items"/libre_espace

Bloc de code: (de mon fichier maj-droits.sh)
#!/bin/bash
/usr/sbin/chown -R lauranne:staff /Users/Shared/libre_espace
chmod -R 777 /Users/Shared/libre_espace

quand je fais le test depuis : préférences système... partage... partage de fichiers... clic droit sur mon dossier partagé "libre_espace". -> appliquer les autorisations aux éléments inclus. ... ça marche ( ajout des utilisateurs + droits 777 )

c'est exactement cette fonction que je souhaite activer automatiquement toute les 10 ou 15 minutes, même toute les minutes ,:)

1/ est-ce que j'ai une erreur sur ma ligne ?
/usr/sbin/chown -R lauranne:staff /Users/Shared/libre_espace

2/ avez vous un autre logiciel pour remplacer : CronniX 3.0.2. ou fonctionne-t-il encore
(j'ai pas réussi l'installation surement à cause de ma puce M1 )

3/ en 2022 , 9 ans après le poste initial , y a t-il une autre solution ? ou celle-ci reste t-elle d'actualité ?
pourquoi Automator ne peux pas faire ça par exemple ?

merci pour votre aide :)

jérémy
 
CronniX est une application 32-bits qui n'est plus prise en charge par les versions de macOS à partir de Catalina compris. Mais je t'ai trouvé une solution alternative qui ne passe plus par la crontab pour exécuter une tâche répétitve d'arrière-plan > mais qui utilise le service launchd en lui faisant charger un daemon exécutant répétitivement un programme défini par un script shell.

- souhaites-tu que je te l'expose sous forme de petit tuto comme je l'avais fait naguère pour ccciolll ?​
 
  • J’aime
Réactions: jeremy72
Voici le petit tuto -->

- a) je suppose que tu as créé dans TextEdit un fichier intitulé : maj-droits.sh dont le contenu soit :​
Bloc de code:
#!/bin/bash
/usr/sbin/chown -R lauranne:staff /Users/Shared/libre_espace
chmod -R 777 /Users/Shared/libre_espace
  • ce qui implique que tu aies créé un sous-dossier intitulé libre_espace dans le dossier Partagé (Shared) des Utilisateurs. Note que les intitulés du fichier script ou du dossier cible peuvent être modifiés.

Déplace le fichier maj-droits.sh => à la localisation : /Library/Scripts (dans la Bibliothèque de l'OS > dossier Scripts).

----------

- b) cela fait > passe alors la commande :​
Bloc de code:
sudo chmod u+x /Library/Scripts/maj-droits.sh
  • pour rajouter l'executable_bit (x) aux permissions de l'utilisateur (= toi : lauranne) du fichier maj-droits.sh. Ce qui transforme le fichier en fichier exécutable.
----------

- c) crée à présent dans TextEdit un fichier intitulé : com.maj-droits.plist avec le contenu suivant :​
Bloc de code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>com.maj-droits.app</string>
        <key>Program</key>
        <string>/Library/Scripts/maj-droits.sh</string>
        <key>RunAtLoad</key>
        <true/>
        <key>StartInterval</key>
        <string>30</string>
    </dict>
</plist>
  • ce fichier de type XML équivaut à une liste d'instructions conformes à la syntaxe attendue d'un fichier que le processus launchd (launch_daemon : le processus parent des processus de détail de l'OS) --> pourra lire pour en faire un service (daemon : processus récurrent d'arrière-plan lancé à l'initialisation de l'OS). Parmi ces instructions : KeepAlive=true & RunAtLoad=true commandent le lancement du service à l'initialisation de l'OS et son maintien en vie tout le temps de cette initialisation ; enfin Startinterval=30 temporise l'action du service toutes les 30 secondes. Par ailleurs > la clé : Label détermine l'intitulé du service > et la clé : Program détermine l'adresse au script shell exécutable dont le contenu équivaut au programme à exécuter.

Déplace le fichier com.maj-droits.plist => à la localisation : /Library/LaunchDaemons (dans la Bibliothèque de l'OS > dossier LaunchDaemons).

----------

- d) cela fait passe enfin la commande :​
Bloc de code:
sudo chown 0:0 /Library/LaunchDaemons/com.maj-droits.plist
  • qui modifie les accédants du fichier à : user=root & primary group=wheel (0 et 0 en valeur octale). Un "daemon" se différenciant d'un "agent" > non dans sa fonction de service récurrent de toile de fond > mais dans l'identité de son utilisateur propriétaire : un daemon ayant root en usager propriétaire > un agent ayant pour usager un utilisateur particulier.
----------

Tout cela accompli > redémarre une fois --> ce qui va permettre au processus parent launchd (le Service des services de l'OS) de charger l'instruction du fichier com.maj-droits.plist comme daemon courant sans arrêt en arrière-plan et effectuant les instructions du script shell : maj-droits.sh qui constitue son programme.

=> tu n'auras qu'à dire si çà fonctionne...​
 
Dernière édition par un modérateur:
Bonjour macomaniac,

la commande numéro 2 fonctionne bien => elle passe les staff et everyone de "lecture seulement" à "lecture et écriture" => TOP
Bloc de code:
chmod -R 777 /Users/Shared/libre_espace

par contre la commande numéro 1 ne marche pas => elle devrait ajouter les "romain" et "marion" à la liste des utilisaeur avant de passer tout le monde en 777
Bloc de code:
/usr/sbin/chown -R lauranne:staff /Users/Shared/libre_espace


je continue mes test :)
 
autre question : est-ce que je peux dans mon fichier maj-droits.sh donner plusieurs dossier ?

Bloc de code:
#!/bin/bash
/usr/sbin/chown -R lauranne:staff /Users/Shared/libre_espace
chmod -R 777 /Users/Shared/libre_espace
/usr/sbin/chown -R lauranne:staff /Users/lauranne/Documents/TABLEAU
chmod -R 777 /Users/lauranne/Documents/TABLEAU
/usr/sbin/chown -R lauranne:staff /Users/lauranne/Documents/dossierX
chmod -R 777 /Users/lauranne/Documents/dossierX


Autrement :eek::cool::p le : com.maj-droits.plist. fonctionne bien !!
mille merci


me manque juste l'ajout des utilisateurs avant de les passer en 777 et c'est une grande victoire
 
par contre la commande numéro 1 ne marche pas => elle devrait ajouter les "romain" et "marion" à la liste des utilisaeur avant de passer tout le monde en 777
Bloc de code:
/usr/sbin/chown -R lauranne:staff /Users/Shared/libre_espace
Ok pardon , la commande fonctionne bien => elle ajoute bien staff
Bloc de code:
/usr/sbin/chown -R lauranne:staff /Users/Shared/libre_espace
Si je mets staff tout les utilisateurs ont accès au dossier => il faudrait plutôt une commande pour mettre à jours les utilisateurs déjà définit dans le dossier libre_espace ...

comme j'ai plusieurs dossiers à mettre à jours avec des utilisateurs différent =>

Dossier Tableau = lauranne, romain, marion, jeremy
Dossier X = lauranne, jeremy
Dossier Y = lauranne, romain
Dossier Z = lauranne, marion, jeremy

j'ai essayé
Bloc de code:
/usr/sbin/chown -R romain /Users/Shared/libre_espace
réponse => Operation not permitted
 
je viens d'avoir une idée :)
si je créer des groupes utilisateurs : autant que de dossiers que j'ai à partager
je donner les droits utilisateurs de chaque dossiers à un groupe et plus à un utilisateurs
puis j'utilise la commande
Bloc de code:
/usr/sbin/chown -R lauranne:"nom du groupe" /Users/Shared/libre_espace

est que c'est plus propre comme ça ?

du coup dans mon fichier : maj-droits.sh. est-ce que je peux faire ??

Bloc de code:
#!/bin/bash
/usr/sbin/chown -R lauranne:"nom-du-groupe-A" /Users/Shared/libre_espace
chmod -R 777 /Users/Shared/libre_espace
/usr/sbin/chown -R lauranne:"nom-du-groupe-B" /Users/Shared/Dossier_B
chmod -R 777 /Users/Shared/Dossier_B
/usr/sbin/chown -R lauranne:"nom-du-groupe-C" /Users/Shared/Dossier_C
chmod -R 777 /Users/Shared/Dossier_C
 
Dans le fichier exécutable shell > la commande :
Bloc de code:
/usr/sbin/chown -R lauranne:staff /Users/Shared/libre_espace
  • que tu peux simplifier au départ en :
Bloc de code:
chown -R lauranne:staff /Users/Shared/libre_espace
  • instaure de manière lauranne en utilisateur (utilisatrice ?) récursif du dossier libre_espace et de ses contenus > et staff en groupe principal. Il s'agit ici de ce qu'on appelle les autorisations POSIX (basiques ou élémentaires) sur des objets. À ce niveau --> tu ne peux avoir qu'un utilisateur et qu'un groupe principal (et pas plusieurs concomitamment).
  • mais il existe des autorisations secondaires (ou supplétives) dites d'ACL (Access Control List) > qui peuvent greffer sur les autorisations POSIX des autorisations supplémentaires. Comme autoriser machin ou truc en co-utilisateurs d'objets déterminés.

Si tu veux que je t'indique comment modifier le fichier programmatique (le script shell) exécuté de manière récurrente par le daemon --> il faudrait que tu commences par m'expliquer en détail ce que tu souhaites. J'étais parti de l'idée basique que tu voulais autoriser en lecture et écriture tous les membres du groupes staff sur le dossier libre_espace et ses contenus > en réservant à lauranne de manière récurrente le rôle d'usager propriétaire de ces objets. Manifestement tu souhaites quelque chose de plus compliqué.
 
Dernière édition par un modérateur:
j'ai plusieurs dossier partagé accessible via le réseau à des utilisateurs ( en compte : partage uniquement )
quand un utilisateurs créer un sous dossier , les droits ne se sont pas à jours pour les autres tant que je clique pas sur " appliquer les autorisations aux éléments inclus" ( de chaque dossier en + environ 15 ) , chaque utilisateurs à des accès différents à ces dossiers.

l'idée est d'automatiser et ça marche... presque :)

je ne veux pas rajouter ou enlever des utilisateurs, juste actualisé les autorisations déjà défini