Взаимодействие с su

KDE su использует системную команду su, чтобы получить привилегированный доступ. В этом разделе подробно объясняется то, как KDE su это делает.

Так как некоторые реализации команды su (например, в Red Hat®) не позволяют вводить пароль, используя stdin, KDE su создаёт пару терминалов pty/tty и запускает su с его стандартными файловыми дескрипторами, настроенными на такой tty.

Чтобы выполнить программу, которую выбрал пользователь, а не запустить оболочку интерактивно, для команды su используется аргумент -c. Этот аргумент понимается всеми оболочками, соответственно, он должен быть переносимым. Команда su передаёт аргумент -c оболочке пользователя, которая и запускает программу на исполнение. Пример: su root -c программа.

Вместо прямого запуска команды пользователя через su, KDE su запускает небольшую программу, называемую kdesu_stub. Она (запущенная с правами требуемого пользователя) запрашивает определённую информацию от KDE su через канал pty/tty (stdin и stdout для этой программы), а затем уже выполняет программу пользователя. Передаваемая информация: номер X-дисплея, авторизационный X cookie (если доступен), переменная PATH и команда для запуска. Такая вспомогательная программа нужна, потому что X cookie содержит секретную информацию и поэтому не может быть передан в командной строке.