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

  1. #1
    Membre éclairé
    Programme utilisant les entrées/sorties numériques du Raspberry
    Bonjour à toutes et à tous,

    Est-ce qu'un programme utilisant les GPIO (bus i2c ou bus SPI ou GPIO ...) doit être obligatoirement être lancé sous "root" .

    Sinon, que faut-il faire ?

    Cordialement.

    Pierre

  2. #2
    Expert éminent sénior
    Bonjour,

    Tu as déjà posé la question. Dans la même discussion :
    https://www.developpez.net/forums/d2.../#post11150307
    https://www.developpez.net/forums/d2.../#post11151716
    Tu dois ajouter l'utilisateur Pi dans le groupe GPIO.

  3. #3
    Membre éclairé
    Citation Envoyé par Auteur Voir le message
    ... Tu as déjà posé la question. ...
    C'est vrai, mais sous une autre forme.

    Citation Envoyé par Auteur Voir le message
    ... Tu dois ajouter l'utilisateur Pi dans le groupe GPIO.
    J'avais répondu que cela était fait.

    De plus, ce qui suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pi@raspberrypi:~/Projets_Lazarus/Baromètre_Num $ ls -al Baro_Num
    -rwxr-xr-x 1 root root 24751956 oct.   7 17:09 Baro_Num
    montre que mon programme "Baro_Num" dispose des droits d'accès.

    Pour autant, je suis obligé de le lancer avec "sudo" ; c'est-à-dire être "root".

    Mais c'est peut-être normal, je n'ai certainement toujours rien compris à ces droits d'accès !

    Cordialement.

    Pierre

  4. #4
    Expert éminent sénior
    Ok. J'avais mal compris ta question.

    Si tu fais un clic droit sur ton exécutable peux-tu modifier les droits de l'exécutable ? Et donner les droits d'exécution à n'importe quel utilisateur ?

    Sinon essaye avec l'instruction chmod (à utiliser avec sudo)
    Plus de détails :
    https://askubuntu.com/questions/2295...n-from-a-termi
    https://ss64.com/bash/chmod.html

  5. #5
    Membre éclairé
    Citation Envoyé par Auteur Voir le message
    ... Si tu fais un clic droit sur ton exécutable peux-tu modifier les droits de l'exécutable ? Et donner les droits d'exécution à n'importe quel utilisateur ? ...
    Je ne comprends pas , j'ai déjà tous les droits comme je l'avais dit hier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pi@raspberrypi:~/Projets_Lazarus/Baromètre_Num $ ls -al Baro_Num
    -rwxr-xr-x 1 root root 24751956 oct.   7 17:09 Baro_Num
    que faire de plus ?

    Cordialement.

    Pierre

  6. #6
    Expert éminent sénior
    Salut à tous.

    Citation Envoyé par ChPr
    Est-ce qu'un programme utilisant les GPIO (bus i2c ou bus SPI ou GPIO ...) doit être obligatoirement être lancé sous "root" .
    La question a déjà été posée dans un autre sujet et j'avais répondu.
    --> https://www.developpez.net/forums/d2.../#post11151716

    Pour ce rafraichir la mémoire :
    --> https://doc.ubuntu-fr.org/permissions
    --> https://wiki.debian-fr.xyz/Commandes...urs_et_groupes

    Si je comprends bien, il vous manque des commandes pour faire ce que vous voulez faire.
    Commençons par tester un programme au niveau de vos permissions d'accès. Voici le petit programme :
    Code bash :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
     
    echo "ca fonctionne !"
    whoami
    cd /root
     
    exit 0

    Vous êtes dans le compte "pi" et vous allez faire ceci :
    Code bash :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    su root
    {vous saisissez le mot de passe du compte root}
     
    chown root:root zzz.sh
    chmod 4777 zzz.sh
     
    exit

    Après ces commandes, vous vous retrouvez dans le compte "pi".
    Ce programme appartient au compte "root" et au groupe "root".
    Si vous exécutez "./zzz.sh", c'est comme si vous étiez "root" tout en étant dans le compte "pi".
    Pour l'affichage, tout va bien, sauf en ce qui concerne l'accès au répertoire "/root".

    Je rappelle que le répertoire "/root" à les droits d'accès suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    drwx------  26 root root  4096 oct.   9 13:04 root
    si vous désirez un accès, alors vous devez le définir ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    drwx-----x  26 root root  4096 oct.   9 13:04 root
    en tapant la commande suivante :
    Code bash :Sélectionner tout -Visualiser dans une fenêtre à part
    sudo chmod o+X /root

    Pourquoi en tant que "pi", l'accès se fait par "other" ?
    Parce que le propriétaire du répertoire "/root" est "root" et il appartient au groupe "root".
    Et que vous êtes ni le propriétaire, ni dans le groupe du propriétaire.

    Ainsi tout le monde peut accéder au contenu du répertoire "/root" (ce n'est pas forcément une bonne idée, mais c'est pour l'exemple).
    Et du coup, en exécutant le programme, cette fois-ci vous avez les permissions.

    Ou bien, vous mettez le compte "pi" dans le groupe "root" :
    mais par contre, vous définissez les permission d'accès au répertoire de cette façon là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    drwx--x---  26 root root  4096 oct.   9 13:04 root
    en tapant la commande suivante :
    Code bash :Sélectionner tout -Visualiser dans une fenêtre à part
    sudo chmod g+X /root

    Vous devez redémarrer votre raspberry pour que les modifications soient activées.
    Je sais, ce n'est pas facile à comprendre !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  7. #7
    Membre éclairé
    Je te remercie "Artemus" pour toutes ce explications.

    Pour autant, tout ceci me paraît bien compliqué, simplement pour éviter de lancer mon programme avec "sudo".

    Par ailleurs, mon programme (et d'autres) utilisant les GPIO sont en cours de développement ou d'essais ; ce qui veut dire que je les recompile à tout bout de champ et je me suis aperçu, qu'après la compilation, le droit "s" était perdu.

    Donc, pour moi, pour l'instant et dans ces conditions, le plus simple est de lancer Lazarus avec "sudo", ce qui me permet d'exécuter mes programmes sans autre forme de procès.

    Néanmoins, je retiens les informations que tu m'as données.

    Cordialement.

    Pierre

  8. #8
    Expert éminent sénior
    Salut ChPr.

    Pour approfondir la question, cherchez sous google avec les mots "sticky bit".

    Pour la compilation+édition des liens, qu'est-ce qui vous empêche de mettre ces commandes dans votre fichier makefile ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

###raw>template_hook.ano_emploi###