Como determinar se o servidor X é executado com privilégios de root

4

Este é um one-liner: Existe uma maneira / comando para verificar se o servidor X é executado como root ou como usuário?

Isto era para ser um one-liner, mas infelizmente ... Eu recentemente atualizei minha Arch Linux box. Após a atualização, fui notificado de que X agora é executado sem raiz. Eu verifiquei na página oficial Arch Linux e ele diz: "X está agora sem raiz com a ajuda de systemd-logind [...]" [1] Isso me interessou em como verificar se X é executado sem raiz ou não. Como isso pode ser feito?

    
por lord.garbage 30.07.2014 / 13:30

1 resposta

6

Existem algumas maneiras de produzir o ID do usuário (UID) com ps ; um simples é com -f :

ps -fC X

Fornecerá informações para todos os servidores X que estão em execução (pode haver mais de um).

Isso pressupõe que o executável é chamado X - se não houver esse processo, você terá que segmentar outra coisa. Como é quase certo que pelo menos tem o X (por exemplo, Xorg , X11 ), uma alternativa é filtrar através do grep:

ps -o uid,comm -A | grep X

Isso remove os cabeçalhos das colunas, mas o UID é o numérico à esquerda. Se isso for 0 , o processo estará executando a raiz. Se nada aparecer, tente ps -fA | grep X ; este envolve mais desordem.

Finalmente, se não houver nenhum processo com capital X em seu nome, tente x ; você pode pelo menos encontrar comandos usados para controlá-lo, como startx ou xinit . Você também pode tentar dm , já que os gerentes de exibição geralmente têm isso em seu nome ( gdm , etc). No entanto, nenhum deles é realmente o servidor X e, embora xinit inicie o servidor, o executável do servidor geralmente tem setuid bit set , ou seja, mesmo que xinit tenha um UID não privilegiado, X ainda será executado como root .

    
por 30.07.2014 / 13:43