Nœud de périphérique Linux accessible uniquement à certains groupes de processus
-
06-07-2019 - |
Question
J'ai un module de pilote de périphérique qui effectue un register_chardev (). Dans la fonction open () du pilote, je souhaite pouvoir déterminer le pid ou le pgid du processus qui tente d'ouvrir le nœud de périphérique. Est-ce possible? Quelqu'un at-il une idée de l'endroit où commencer?
Je suppose que cela devrait quelque peu sécuriser mon nœud de périphérique afin d'autoriser uniquement mes applications à l'utiliser, car vous ne pouvez pas migrer un processus vers un nouveau groupe de processus à moins qu'ils ne soient dans la même session.
La solution
Le noyau n'est pas le bon endroit pour prendre ce type de décision de politique. Le bon endroit pour définir les autorisations permettant d'ouvrir le nœud de périphérique consiste à définir les droits de propriété et les autorisations habituels sur le fichier du nœud de périphérique dans le système de fichiers.
Si votre coeur est vraiment réglé dessus, current- > pid
est le PID, current- > tgid
est l'identifiant du groupe de threads et current- > group_leader- > pid
est le PGID.