Utiliser un utilisateur différent pour l'accès au donnée de l'appli

wiskywisky Membre
02:30 modifié dans API AppKit #1
Bonjour à  tous,

Je cherche à  faire en sorte que seul un utilisateur x utilisé par mon appli puisse accéder à  ses données.
Pour les droits c'est pas un problème.
Je cherche à  savoir somment faire pour créer cet utilisateur x via la ligne de commande de mac os x.
Et je cherche aussi à  faire en sorte que le logiciel utilise cet utilisateur pour ce lancer et utiliser ainsi les donnée de cet utilisateur.

Comment procéder?

PS: les données en question sont parfois sensible et pour mon logiciel je préfère que personne viennent y fouré son née dedans (sauf les irréductible bidouilleur) ;)

Réponses

  • ChachaChacha Membre
    02:30 modifié #2
    dans 1152217662:

    Bonjour à  tous,
    Je cherche à  savoir somment faire pour créer cet utilisateur x via la ligne de commande de mac os x.

    Je ne sais pas s'il existe un framework pour simplifier la tâche, mais en ligne de commande, ça ressemblerait à  ça :
    http://www.labo-apple.org/?103/Creer-des-utilisateurs-en-ligne-de-commande


    Et je cherche aussi à  faire en sorte que le logiciel utilise cet utilisateur pour ce lancer et utiliser ainsi les donnée de cet utilisateur.

    En ligne de commande il y a <su>, mais je crois qu'il vaut mieux regarder de ce côté là :
    http://developer.apple.com/documentation/Security/Conceptual/authorization_concepts/index.html

    +
    Chacha
  • AliGatorAliGator Membre, Modérateur
    02:30 modifié #3
    Il y a aussi le setuid et setgid aussi, qui permettent IIRC de forcer un executable à  se lancer avec comme utilisateur son possesseur et son groupe.
    C'est comme ça qu'est faite la commande "sudo" d'ailleurs : l'executable sudo appartient à  "root:root" et les flags setuid et setgid sont "cochés" pour cet executable sudo, ce qui fait que lorsqu'il est utilisé, il est lancé en tant que root.

    un petit "man chmod" pour plus d'infos (modes 4000 et 2000). Donc à  priori un simple "[tt]chmod +6000 tonexec[/tt]" ou "[tt]chmod og+s tonexec[/tt]" pourrait aller.

    Après j'ai jamais testé concrètement mais à  mon avis c'est une bonne piste.
  • ChachaChacha Membre
    02:30 modifié #4
    dans 1152262618:

    Il y a aussi le setuid et setgid aussi (...)
    Après j'ai jamais testé concrètement mais à  mon avis c'est une bonne piste.


    ah, oui, effectivement, bonne piste, le setuid et le seteuid
    (faire <man setuid> et <man seteuid>)

    C'est un peu compliqué, à  chaque fois je me mélange les pédales. Ce qu'il faut savoir, c'est qu'on peut effectivement changer dynamiquement l'identité de l'utilisateur qui exécute un processus. Mais il y a une astuce : il y a deux id ! Le uid (user id normal) et le euid (effective user id). En effet, si je ne me trompe pas, l'identité originale peut être sauvegardée pour faire marche arrière (par exemple, un admin peut devenir simple user, mais si la sauvegarde n'était pas faite, le simple user ne pourrait évidemment pas se repromouvoir admin)

    +
    Chacha
  • wiskywisky Membre
    02:30 modifié #5
    Merci,
    J'arrive maintenant à  créer un utilisateur mais il me manque la création du groupe.
    L'attribution du groupe, utilisateur et droit aux données ce fait pas chown et chmod.
    Pour ce qui est de l'application, je cherche encore.
    Je vous donne plus de détaille. Je cherche à  faire comme MySQL. Ce dernier lors de l'installation créer son groupe et utilisateur "mysql" sur le système. Le dossier comportant les bases de donnée ont comme groupe et utilisateur "mysql". Et lorsque le serveur ce lance il est lancé avec l'utilisateur MySQL.
    Je chercher à  faire la même chose pour mon logiciel ;)

    [EDIT] dans le cas de chacha il faut que je l'intègre dans mon appli? si oui, elle est en Obj-C où je le met?
Connectez-vous ou Inscrivez-vous pour répondre.