Інтерфейс su

Для отримання належних привілеїв KDE su використовує системну команду su. У цьому розділі детально пояснено, яким чином KDE su це робить.

Оскільки деякі з реалізацій команди su (наприклад реалізація цієї команди у Red Hat®) не бажають читати пароль з stdin, KDE su створює пару pty/tty і виконує команду su за допомогою її стандартних дескрипторів файлів, з’єднаних з tty.

Для виконання вказаної користувачем програми KDE su використовує аргумент параметра -c у сполученні з командою su замість інтерактивної оболонки. Цей аргумент розпізнається всіма відомими авторові оболонками і має без проблем працювати всюди. Команда su передає аргумент -c до оболонки призначення користувача, а оболонка виконує саму програму. Приклад команди: su root -c програма.

Замість виконання команди користувача безпосередньо за допомогою su, KDE su виконує невеличку проміжну програму з назвою kdesu_stub. Ця проміжна програма (запущена від імені визначеного користувача) надсилає запит на отримання деякої інформації від KDE su за допомогою каналу pty/tty (stdin і stdout проміжної програми), а потім виконує вказану програму. Інформація, яка передається за допомогою проміжної програми: назва дисплея X, кука розпізнавання X (якщо доступний), системна змінна PATH і команда, яку слід виконати. Причиною використання проміжної програми є те, що у куці X міститься особиста інформація, тому цю інформацію не можна передавати за допомогою командного рядка.