Для отримання належних привілеїв 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 міститься особиста інформація, тому цю інформацію не можна передавати за допомогою командного рядка.