IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Definir les droits d'un programme


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 87
    Par défaut Definir les droits d'un programme
    bonjour,

    J'ai créé un programme c et il faudrait que je puisse vérifier les droits de l'utilisateur : apparemment ça se fait par makefile.
    Pourtant j'ai lu beaucoup d'articles/tutos sur les makefile et je n'ai rien trouvé concernant les droit :

    PLus clairement ce que je veux c'est créer un makefile qui créé le programme (ça j'ai réussi... avec votre aide déjà) mais aussi qui vérifie si l'utilisateur a les droit en écriture/lecture dessus (et sur /usr/local où les exécutables se situe si j'ai bien compris ?).
    Je sais le faire en passant par le shell mais par makefile non. De plus, ne se peut il pas non plus que l'utilisateur n'ai pas les droits pour le makefile ?

  2. #2
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 872
    Par défaut
    C'est l'utilisateur qui compilera le programme qui aura les droits dessus.

    Par contre, dans le dossier /usr/local, tu as les droits d'executions mais pour le reste il faut etre super utilisateur si je me souviens bien. Si tu n'as pas les droits de lecture sur un makefile, tu ne pourras effectivement pas creer d'executable en utilisant la commande make.

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 87
    Par défaut
    J'ai pas bien compris : en gros si tu compiles tu as forcément les droits dessus ?
    Pour le makefile comment peut on vérifier avant même de faire make all si on a les droits dessus ?

    En tout cas si je demande ça c'est parce que j'ai dans mon projet la consigne :
    "joindre un makefile pour automatiser la production de l'executable et l'installation du logiciel (et on verifiera par exemple si l'utilisateur a bien les droits en écriture sur usr/local)"

    Je comprend même pas exactement pourquoi il faut verifier les droits sur ce dossier là en fait...

  4. #4
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Bonjour,

    en général le makefile propose une target install, qui utilise la commande install (man install pour plus d'info).
    Normalement ton makefile contient une variable PREFIX qui va indiquer la racine à partir de laquelle tu veux installer ton soft.
    Soit l'utilisateur possède suffisamment de droits et make install s'exécutera sans erreur, soit il ne les possède pas et make install échouera avec un message significatif dans la plupart des cas.
    C'est comme ça qu'on peut test facilement tester une install avec un make PREFIX=~/test install et que pour une installation système on lance un sudo make install.
    Conclusion, ne cherche pas à construire un script complexe de vérification des droits, utilise la commande install : les utilisateurs ont généralement l'habitude de ce mécanisme et savent gérer les erreurs s'il y en a (généralement une tape sur le front en lachant un «pfff encore oublié le sudo»)

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 87
    Par défaut
    Bonjour,

    Je n'ai pas tout compris, j'ai fait des recherches et tenté des trucs à l'aide de ce que j'ai trouvé sur internet mais ça ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    INSTALL = /usr/local/bin/install -c
    bindir = /home/bin
     
    all : monProg
     
    #tous les .o, creation de mon prog etc
     
    install: all
    	$(INSTALL) monProg $(bindir)
    Normalement de ce que j'ai compris je suis censé pouvoir voir quelque chose (je ne sais même pas quoi) dans "/usr/local/bin/install", or le dossier install n'existe pas. J'ai alors essayé de rajouter l'option "-d" (qui de ce que j'ai compris est censé créer les répertoires non existant), mais ça ne marche pas non plus.
    De plus, je pensais que mon programme serait lançable de n'importe où (grace à binDir qui est censé le mettre dans le "PATH" non?) mais il n'est lançable que à partir du dossier où j'ai fait le makefile.


    merci de votre aide!

  6. #6
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Bonjour,

    alors, install est une commande. Une manière de savoir si elle est disponible et quel est son chemin est d'utiliser la commande install ainsi (je te donne le résultat sur ma machine) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    > which install
    /usr/bin/install
    La commande me répond /usr/bin/install. Cela signifie que install est disponible et que cette commande se trouve dans /usr/bin.
    Si tu créais le makefile sur ma machine tu indiquerais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSTALL = /usr/bin/install -c
    Ensuite pour rendre un de tes exécutables disponible "system wide" est de le placer dans "/usr/bin" tout simplement car le répertoire "/usr/bin" est par défaut dans le PATH de tout utilisateur. Même si tou les users ont un accès en lecture à tout ce qui se trouve dans ce répertoire, seul un superutilisateur aura le droit d'y écrire = d'y installer de nouveau programmes. Si tu n'es pas autorisé à obtenir des privilèges suffisant tu ne pourras jamais y installer quoi que ce soit. Pour obtenir ces privilièges tu devra être autorisé à utiliser la commande sudo et lancer make en les demandant : sudo make install. Cette dernière commande signifie «exécute make install avec les privilèges d'un superutilisateur».

    Un dernier point, le plus simple pour tes premiers pas est d'installer dans /usr/bin, tu es certain qu'il se trouvera dans le PATH ce qui n'est pas le cas de /usr/local/bin (qui peut ne pas exister).
    Il est aussi pas mal de créer une taget make uninstall qui va simplement effacer ton programme de /usr/bin.

  7. #7
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 87
    Par défaut
    merci de ta réponse, avant d'essayer j'aimerais éclaircir un point : Normalement, n'importe qui qui essaie d'installer mon programme doit être en mesure de le faire, or là tu me dis de tester "which install" sur mon ordinateur uniquement non ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/06/2015, 17h37
  2. Réponses: 4
    Dernier message: 23/03/2015, 20h43
  3. Réponses: 2
    Dernier message: 23/10/2011, 08h59
  4. Réponses: 0
    Dernier message: 12/11/2009, 16h16
  5. [Info]Les droits relatifs à la programmation Java
    Par athelinos dans le forum Langage
    Réponses: 8
    Dernier message: 10/02/2006, 11h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo