O KDE su usa o comando su do sistema para obter privilégios. Nesta secção, serão explicados os detalhes de como o KDE su faz isso.
Dado que algumas das implementações do su (isto é a da Red Hat®) não querem ler a senha a partir do stdin
, o KDE su cria um par PTY/TTY e executa o su com os seus descritores-padrão de ficheiros associados ao TTY.
Para executar o comando seleccionado pelo utilizador, em vez de uma linha de comandos interactiva, o KDE su usa o argumento -c
com o su. Este argumento é entendido por todas as linhas de comando conhecidas, por isso deve funcionar sem problemas. O su passa o argumento -c
para a linha de comandos de destino do utilizador, para que esta execute o programa. Um comando de exemplo: suroot -c
.programa
Em vez de executar o comando do utilizador directamente com o su, o KDE su executa uma pequena porção de programa chamada kdesu_stub. Esta porção (correndo com o utilizador de destino), pede alguma informação ao KDE su sobre o canal PTY/TTY (a parte do 'stdin' e 'stdout') e, a seguir, executa o programa do utilizador. A informação recebida é: o ecrã do X, uma 'cookie' de autenticação X (se disponível), o PATH
e o comando a executar. A razão porque é usada uma parte do programa é que a 'cookie' do X contém informação privada e, por conseguinte, não pode ser passada na linha de comandos.