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

Administration système Discussion :

Droits d'accès à un fichier spécial (/dev/ttyUSB0)


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de mnemozip
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 26
    Par défaut Droits d'accès à un fichier spécial (/dev/ttyUSB0)
    (Ndlm : message initialement posté à la suite de cette discussion).


    Bonjour, je répond un moment après son post mais je suis confronté au même besoin.

    L'accès au port retourne une erreur 13 : "Permission denied" !

    Pour accéder au port avec succès sous Linux il faut insérer "une demande de droit d'accès" ce qui correspond a saisir le mot de passe utilisateur ou superutilisateur.

    Avez vous une idée comment le faire ?

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Bonjour,

    Citation Envoyé par mnemozip Voir le message
    Bonjour, je répond un moment après son post mais je suis confronté au même besoin.
    Presque dix ans plus tard, en effet. ;-)

    L'accès au port retourne une erreur 13 : "Permission denied" !
    Pour accéder au port avec succès sous Linux il faut insérer "une demande de droit d'accès" ce qui correspond a saisir le mot de passe utilisateur ou superutilisateur.
    Non, ça c'est souvent ce que l'on fait en Shell quand on veut ponctuellement contourner le problème mais ce n'est pas en soi la première voie à suivre. Si tu obtiens « permission denied » en accédant à un fichier spécial, cela veut dire qu'il y a effectivement des droits d'accès dessus à respecter mais ce n'est pas à ton programme de les contourner : c'est à toi d'en faire la demande auprès de ton administrateur (si tu n'es pas toi-même l'administrateur de la machine sur laquelle tu travailles) ou de configurer les droits pour y avoir accès en conditions normales.

    Lance un ls -l <chemin d'accès vers le fichier /dev/ concerné> et regarde quels sont ses droits. Tu peux les changer une fois pour toutes mais il y a de fortes chances pour qu'il appartiennent déjà à un groupe particulier. La méthode orthodoxe consiste alors à t'ajouter toi-même à ce groupe, puis te déconnecter/reconnecter pour que cela soit pris en compte. Tu auras alors le droit d'y accéder avec n'importe quelle commande ou programme, y compris celui que tu as écrit.

  3. #3
    Membre averti Avatar de mnemozip
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 26
    Par défaut
    Merci pour les informations mais j'aimerai que mon programme se comporte comme l'application Minicom :

    Lors de l’accès au /dev/ttyUSB0 que le mot de passe utilisateur soit demandé ?

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Citation Envoyé par mnemozip Voir le message
    Merci pour les informations mais j'aimerai que mon programme se comporte comme l'application Minicom :

    Lors de l’accès au /dev/ttyUSB0 que le mot de passe utilisateur soit demandé ?
    Lorsque j'essaie moi-même (avec le port série car je n'ai pas de terminal USB sous la main), j'obtiens bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ minicom -D /dev/ttyS1
    Cannot create lockfile for /dev/ttyS1: Permission non accordée
    Il faudrait que tu nous donnes plus de détails sur la distribution que tu utilises ainsi que la façon dont minicom t'invite à saisir ton mot de passe. Est-ce dans une fenêtre plein écran intégré à ton environnement de bureau ou est-ce depuis le terminal, depuis une ligne qui suit la commande que tu as lancée ?

    Dans le premier cas, il est possible que ta distribution soit configurée pour placer des hooks sur certaines commandes utiles et/ou populaires (par exemple, « systemctl »), afin de t'inviter elle-même à saisir ton mot de passe et lancer ensuite la commande avec les droits, de façon à ce que cela apparaisse propre et facile à utiliser à l'utilisateur débutant.

    Dans le second, il y a deux cas à prendre en compte. Le fait d'utiliser son mot de passe pour lancer l'application en super-utilisateur (généralement, sous Unix, tout cela s'appuie sur sudo) et le fait que minicom servent à exploiter une ligne série et se connecter à distance. Auquel cas, selon le protocole, le mot de passe demandé peut-être celui de la machine contactée et pas forcément la tienne.

    Dans cette situation, ça ne te dirait pas comment minicom a pu avoir accès à la ligne série. La réponse est généralement dans les « setuid/setgid bits ». Un examen des bits de flags en début de ligne de ls -l $(which minicom) devrait te renseigner.

    Dans tous les cas, il s'agit donc d'administration système avant d'être du langage C.

    Je t'invite donc à jeter aux man pages suivantes pour te renseigner sur le fonctionnement des programmes que tu utilises

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    man su
    man sudo
    man sudoers
    man minicom
    … puis dans le cas de Minicom en particulier, aux fichiers de configuration qu'il utilise. Sur ta machine, certains sont peut-être déjà configurés sans que tu le saches pour gérer ces affaires de mot de passe :

    FICHIERS
           Minicom conserve les fichiers de configuration dans un répertoire, habituellement /var/lib/minicom, /usr/local/etc ou /etc. Pour chercher quel répertoire par défaut est com‐
           pilé, faites la commande minicom -h. Vous trouverez probablement aussi les fichiers de démonstration pour runscript(1), et les exemples de tables de conversion de caractères
           soit  ici, soit dans les sous-répertoires de /usr/doc/minicom*. Les tables de conversion sont nommées quelque chose comme mc.* dans ce répertoire, mais vous voulez probable‐
           ment copier ceux dont vous avez besoin dans votre dossier personnel en quelque chose commençant par un point.
    
           minicom.users
           minirc.*
           $HOME/.minirc.*
           $HOME/.dialdir
           $HOME/minicom.log
           /usr/share/locale/*/LC_MESSAGES/minicom.mo
    
    Bon courage.

  5. #5
    Membre averti Avatar de mnemozip
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 26
    Par défaut
    Oui, j'ai le source et je recherche les informations... mais en attendant j'ai mis un post pour essayer de gagner du temps pensant que la solution serait dégainée rapidement


    Je dispose de plusieurs pc sous des Linux différents, un W8 et un W10.

    Au boulot un w10.

    Je travaille aussi le faite que mon appli peut être compilée sous différents OS.

    Merci

  6. #6
    Membre averti Avatar de mnemozip
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 26
    Par défaut Nouvelle piste
    Bonjour,

    J'ai effectué les manipes proposées mais l’accès reste interdit.

    Afin de palier au problème de droit d’accès à un port série dans une application en C qui tourne sous Linux.

    Il faut faire une demande au system.

    J'ai le code source de l'application Minicom et donc, j'ai bien vu les manipulations.

    De faire des copier coller du source, ne sert a rien car les informations nécessaires sont réparties dans différents librairies.

    Il faut intégrer dans le code C, les librairies nécessaire pour accéder via des sockets au system.

    Via les sockets, le programme effectue une commande qui en retour sur le terminale demande à l'utilisateur le mot de passe pour obtenir les droits.

    Si OK, l'ouverture port avec la commande OPEN ne retourne pas -1.

    Si quelqu'un peux m'expliquer le principe et m'orienter vers un source que je pourrai adapter à mon application cela me serait très utile.

    Merci par avance.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/04/2007, 20h08
  2. droits d'acces à un fichier
    Par pipip dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 13/01/2007, 01h59
  3. Droits d'acces aux fichiers dans dossier en partage
    Par catoucat dans le forum Windows XP
    Réponses: 3
    Dernier message: 03/07/2006, 02h47
  4. [Configuration] droits d'accès aux fichiers
    Par drommk dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 20/06/2006, 17h31
  5. [Tomcat]Droit d'accès aux fichiers créés par une servlet
    Par loulouleboss dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 15/07/2004, 14h32

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