Aller au contenu

Featured Replies

Posté(e)

Bonjour a toutes et a tous,

voila cela fait un moment que je cherche sans pour autant trouvé la solution, j'aimerai fait en sorte que lorsque je finalise la création d'un user un script soit appeler automatiquement pour créer des dossier spécifique dans le home de celui ci.

je ne pense pas être le seul a vouloir faire se genre de chose et je pense que ce sujet a déjà été abordé mais je n'arrive pas a mettre la main dessus.

je sollicite donc votre aide :)

Posté(e)

j'aimerai fait en sorte que lorsque je finalise la création d'un user un script soit appeler automatiquement pour créer des dossier spécifique dans le home de celui ci.

Un peu de "reverse engineering" de la commande "synouser" m'a permis de te trouver une solution

Attention: je n'ai pas pris le temps de m'assurer si c'était documenté et donc ne saurais te garantir que ça reste fonctionnel en cas d'upgrade de DSM (mais j'ai bon espoir malgré tout).

  • Mettre le script dans le dossier "/usr/local/libexec/user_set".
  • Son nom est sans importance
  • Le rendre exécutable ("chmod 755" fonctionne)
  • Lui appliquer le squelette suivant:

    #!/bin/ash
    
    case $1 in
        --sdk-mod-ver)
            # important sinon la partie "--post" ne sera pas invoquée
            echo 1.0
            ;;
        --post)
            # Cette partie sera invoquée *apres* que le compte ait été créé
            # Les informations sur ce dernier sont communiquées
            # via des variables d'environnement. 
            # Parmi celle-ci, celles ci-dessous me semble utiles dans ton cas:
            # $UID_1
            # $USER_NAME_1
            # $RESULT (vaut 0 si la création du compte à réussi)
            # mettre tes commandes en dessous de cette ligne
            ;;
    esac
    exit
    
    

Note: lors de son exécution, la sortie standard et la sortie d'erreur sont redirigées. Par conséquent faudra utiliser un fichier de log de sortie ou la commande "logger" en phase de debug pour les diagnostics.

Modifié par CoolRaoul

Posté(e)
  • Auteur

Un peu de "reverse engineering" de la commande "synouser" m'a permis de te trouver une solution

Attention: je n'ai pas pris le temps de m'assurer si c'était documenté et donc ne saurais te garantir que ça reste fonctionnel en cas d'upgrade de DSM (mais j'ai bon espoir malgré tout).

  • Mettre le script dans le dossier "/usr/local/libexec/user_set".
  • Son nom est sans importance
  • Le rendre exécutable ("chmod 755" fonctionne)
  • Lui appliquer le squelette suivant:

    #!/bin/ash
    
    case $1 in
        --sdk-mod-ver)
            # important sinon la partie "--post" ne sera pas invoquée
            echo 1.0
            ;;
        --post)
            # Cette partie sera invoquée *apres* que le compte ait été créé
            # Les informations sur ce dernier sont communiquées
            # via des variables d'environnement. 
            # Parmi celle-ci, celles ci-dessous me semble utiles dans ton cas:
            # $UID_1
            # $USER_NAME_1
            # $RESULT (vaut 0 si la création du compte à réussi)
            # mettre tes commandes en dessous de cette ligne
            ;;
    esac
    exit
    
    

Note: lors de son exécution, la sortie standard et la sortie d'erreur sont redirigées. Par conséquent faudra utiliser un fichier de log de sortie ou la commande "logger" en phase de debug pour les diagnostics.

Merci beaucoup je vais regarder ça le plus vite possible :)

et sinon comment tu a décrypté le script synouser? je suis preneur cela peux toujours servir :)

Posté(e)

comment tu a décrypté le script synouser?

"synouser" n'est pas un script (ce qui aurait simplifié mon enquète) mais un binaire.

Pour espionner son comportement j'utilise un outil qui n'est pas nativement inclus dans DSM: strace (que je me suis cross-compilé à l'aide de la toolchain synology).

Il permet de lancer tracer tous les appels systèmes (et optionnellement de librairies) d'une commande.

Ca m'a permis de constater que synouser enumérait (entre autre choses) les fichiers contenus dans "/usr/local/libexec/user_set" exécutait chacun d'eux (via "/bin/sh -c") avec le parametre "--sdk-mod-ver"

Me suis concocté un petit script de test et avec un peu de présévérance j'ai pu comprendre le mécanisme.

Posté(e)
  • Auteur

Oki bon je regarderai si je peux me concocter un truck du même style, merci pour les infos.

Faudrai que je trouve a l'occasion comment decompiler les cgi mais ca c une autre histoire :)

Je vais faire une demande d'evolution a syno des que j'aurai le temps pour géré graphiquement l'ajout de script en fin de creation d'user, ca a peux d'importance pour un particulier mais pour une boite ca peux etre interessant.

En tout cas un grand merci

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.