Interface avec su

KDE su utilise la commande su du système pour acquérir ses privilèges. Dans cette section, j'explique en détail ce fonctionnement.

Du fait que certaines implantations de su (comme celle de Red Hat®) ne veulent pas lire le mot de passe depuis stdin, KDE su crée une paire pty / tty et exécute su avec ses entrées-sorties standards connectées à tty.

Pour exécuter la commande choisie par l'utilisateur, au lieu d'un shell interactif, KDE su utilise l'argument -c avec su. Cet argument est compris par tous les shells que je connais, donc le programme devrait être portable. su passe cet argument -c au shell de l'utilisateur, et le shell exécute le programme. Exemple de commande su root -c le-programme.

Plutôt que d'exécuter directement la commande avec su, KDE su exécute un petit morceau de programme nommé kdesu_stub. Exécuté pour le compte de l'utilisateur cible, il demande quelques informations à KDE su à travers le canal pty / tty (qui correspond à ses sorties standards « stdin » et « stdout ») et exécute le programme de l'utilisateur. L'information qui est transmise comprend : l'affichage X, le cookie d'authentification X (le cas échéant), le PATH et la commande à lancer. La raison pour laquelle un petit programme intermédiaire est utilisé, c'est que le cookie X est une information privée et que, pour cette raison, il ne peut pas être passé sur la ligne de commande.