Nodo dispositivo Linux accessibile solo a determinati gruppi di processi
-
06-07-2019 - |
Domanda
Ho un modulo driver di dispositivo che fa register_chardev (). Nella funzione driver open () desidero poter determinare il pid o il pgid del processo che sta tentando di aprire il nodo del dispositivo. È possibile? Qualcuno ha qualche idea di dove iniziare?
Suppongo che questo dovrebbe in qualche modo proteggere il mio nodo del dispositivo per consentire solo alle mie applicazioni di usarlo, poiché non è possibile migrare un processo in un nuovo gruppo di processi a meno che non si trovino nella stessa sessione.
Soluzione
Il kernel non è il posto giusto per prendere questo tipo di decisione politica - il posto giusto per impostare le autorizzazioni su chi può aprire il nodo del dispositivo è impostando la solita proprietà e le autorizzazioni sul file del nodo del dispositivo nel filesystem.
Se hai davvero il cuore su di esso, current- > pid
è il PID, current- > tgid
è l'id del gruppo di thread e current- > group_leader- > pid
è il PGID.