A autenticação X11 não está funcionando no 'sudo sux / sudo su', mas funciona em 'sux / su.' Por quê?

1

Eu tenho uma sessão vnc e posso acessar o X11 apenas fazendo su - user , para outro usuário, sem a necessidade de sux.

Além disso, quando estou tentando mudar para o usuário, usando sudo sux - user ou sudo su - user , não consigo acessar o X11 e obtenho o seguinte erro:

X11 connection rejected because of wrong authentication.

Mas outros estão funcionando: sux e su .

Claro, ainda estou confuso sobre a mensagem que o sux mostra:

Value of TERM has been set to "xauth -q remove localhost:100.0 2>/dev/null; xauth -q remove localhost/unix:100.0;"

  1. Por que está removendo as chaves antigas? Qual é a necessidade?

  2. E su e sux funcionam quase da mesma forma, ambos estão removendo chaves antigas e ambas as obras. Como e porquê?

  3. E qual é a razão pela qual sudo su / sudo sux não está funcionando?

por GP92 25.02.2016 / 11:58

1 resposta

2

A resposta (para sux ) é dada nos comentários do script. Ele está transferindo os cookies X de exibição de suas permissões de usuário originais para root, para permitir que ele abra a exibição X usando essas permissões transferidas.

Aqui está uma seção que vale a pena ler:

  # We highjack the TERM environment variable to transfer the cookies to the
  # other user. We do this so that they never appear on any command line, and
  # because TERM appears to be the only environment variable that is not
  # reset by su. Then, as long as 'echo' is a shell builtin, these cookies
  # will never appear as command line arguments which means noone will be
  # able to intercept them (assuming they were safe in the first place).
  sux_term="TERM='$TERM'"             
  # now we can store the script that will restore the cookies on the other
  # side of the su, in TERM!

  # Remove the old cookies. They may cause trouble if we transfer only one
  # cookie, e.g. an MIT cookie, and there's still a stale XDM cookie hanging
  # around.
  export TERM="xauth -q remove $DISPLAY 2>/dev/null;"
  if [ -n "$sux_unix_display" ]
  then     
    TERM="$TERM xauth -q remove $sux_unix_display;"
  fi
    
por 26.02.2016 / 02:46

Tags