Não consigo me livrar da saída x11vnc

3

Eu estou em um sistema Ubuntu que possui uma tela de toque na tela: 0. Eu queria ser capaz de controlar este touchscreen remotamente a partir do Windows, então eu configurei o x11vnc. Isso funciona muito bem. Mas aqui está a configuração:

Eu tenho dois usuários (excluindo o root). Um usuário restrito (basicamente sem permissões e sem senha) que efetua login automaticamente na tela sensível ao toque e um usuário totalmente configurado com uma senha complexa, permissão sudo, etc. Eu realmente me preocupo muito em iniciar x11vnc quando o usuário restrito efetuar login (touchscreen torna-se ativo), então eu coloquei o comando x11vnc -loop & no final do arquivo /home/restricted/.profile . Funciona bem. Note, no entanto, que tem que ser um processo em segundo plano porque há outros comandos que este usuário tem que executar (ocultos do usuário humano) mais tarde.

O problema que estou tendo é que x11vnc é muito barulhento com sua saída. Especialmente se você não usa uma senha (o que eu não faço), e é um loop, então continua repetindo. Geralmente isso não seria um problema, mas não apenas redireciona a saída para / dev / null não funcionando (explicado abaixo), mas a saída está aparecendo no terminal do outro usuário quando eu efetuo login via ssh (que é realmente chato porque eu uso essa conta para manutenção e é impossível fazer qualquer coisa quando sua tela está sendo preenchida com a saída de algum processo em segundo plano. Aqui está um exemplo da saída que eu recebo:

--- x11vnc loop: 1 ---

--- x11vnc loop: waiting for: 1551

###############################################################
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
#@                                                           @#
#@  **  WARNING  **  WARNING  **  WARNING  **  WARNING  **   @#
#@                                                           @#
#@        YOU ARE RUNNING X11VNC WITHOUT A PASSWORD!!        @#
#@                                                           @#
#@  This means anyone with network access to this computer   @#
#@  may be able to view and control your desktop.            @#
#@                                                           @#
#@ >>> If you did not mean to do this Press CTRL-C now!! <<< @#
#@                                                           @#
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
#@                                                           @#
#@  You can create an x11vnc password file by running:       @#
#@                                                           @#
#@       x11vnc -storepasswd password /path/to/passfile      @#
#@  or   x11vnc -storepasswd /path/to/passfile               @#
#@  or   x11vnc -storepasswd                                 @#
#@                                                           @#
#@  (the last one will use ~/.vnc/passwd)                    @#
#@                                                           @#
#@  and then starting x11vnc via:                            @#
#@                                                           @#
#@      x11vnc -rfbauth /path/to/passfile                    @#
#@                                                           @#
#@  an existing ~/.vnc/passwd file from another VNC          @#
#@  application will work fine too.                          @#
#@                                                           @#
#@  You can also use the -passwdfile or -passwd options.     @#
#@  (note -passwd is unsafe if local users are not trusted)  @#
#@                                                           @#
#@  Make sure any -rfbauth and -passwdfile password files    @#
#@  cannot be read by untrusted users.                       @#
#@                                                           @#
#@  Use x11vnc -usepw to automatically use your              @#
#@  ~/.vnc/passwd or ~/.vnc/passwdfile password files.       @#
#@  (and prompt you to create ~/.vnc/passwd if neither       @#
#@  file exists.)  Under -usepw, x11vnc will exit if it      @#
#@  cannot find a password to use.                           @#
#@                                                           @#
#@                                                           @#
#@  Even with a password, the subsequent VNC traffic is      @#
#@  sent in the clear.  Consider tunnelling via ssh(1):      @#
#@                                                           @#
#@    http://www.karlrunge.com/x11vnc/#tunnelling            @#
#@                                                           @#
#@  Or using the x11vnc SSL options: -ssl and -stunnel       @#
#@                                                           @#
#@  Please Read the documention for more info about          @#
#@  passwords, security, and encryption.                     @#
#@                                                           @#
#@    http://www.karlrunge.com/x11vnc/faq.html#faq-passwd    @#
#@                                                           @#
#@  To disable this warning use the -nopw option, or put     @#
#@  'nopw' on a line in your ~/.x11vncrc file.               @#
#@                                                           @#
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
###############################################################
20/05/2016 10:53:18 x11vnc version: 0.9.13 lastmod: 2011-08-10  pid: 1551
20/05/2016 10:53:18 XOpenDisplay("") failed.
20/05/2016 10:53:18 Trying again with XAUTHLOCALHOSTNAME=localhost ...
20/05/2016 10:53:18
20/05/2016 10:53:18 *** XOpenDisplay failed. No -display or DISPLAY.
20/05/2016 10:53:18 *** Trying ":0" in 4 seconds.  Press Ctrl-C to abort.
20/05/2016 10:53:18 *** 1 2 3 4
Invalid MIT-MAGIC-COOKIE-1 key20/05/2016 10:53:22 XOpenDisplay(":0") failed.
20/05/2016 10:53:22 Trying again with XAUTHLOCALHOSTNAME=localhost ...
Invalid MIT-MAGIC-COOKIE-1 key20/05/2016 10:53:22 XOpenDisplay(":0") failed.
20/05/2016 10:53:22 Trying again with unset XAUTHLOCALHOSTNAME ...
Invalid MIT-MAGIC-COOKIE-1 key20/05/2016 10:53:22

20/05/2016 10:53:22 ***************************************
20/05/2016 10:53:22 *** XOpenDisplay failed (:0)

*** x11vnc was unable to open the X DISPLAY: ":0", it cannot continue.
*** There may be "Xlib:" error messages above with details about the failure.

Some tips and guidelines:

** An X server (the one you wish to view) must be running before x11vnc is
   started: x11vnc does not start the X server.  (however, see the -create
   option if that is what you really want).

** You must use -display <disp>, -OR- set and export your $DISPLAY
   environment variable to refer to the display of the desired X server.
 - Usually the display is simply ":0" (in fact x11vnc uses this if you forget
   to specify it), but in some multi-user situations it could be ":1", ":2",
   or even ":137".  Ask your administrator or a guru if you are having
   difficulty determining what your X DISPLAY is.

** Next, you need to have sufficient permissions (Xauthority)
   to connect to the X DISPLAY.   Here are some Tips:

 - Often, you just need to run x11vnc as the user logged into the X session.
   So make sure to be that user when you type x11vnc.
 - Being root is usually not enough because the incorrect MIT-MAGIC-COOKIE
   file may be accessed.  The cookie file contains the secret key that
   allows x11vnc to connect to the desired X DISPLAY.
 - You can explicitly indicate which MIT-MAGIC-COOKIE file should be used
   by the -auth option, e.g.:
       x11vnc -auth /home/someuser/.Xauthority -display :0
       x11vnc -auth /tmp/.gdmzndVlR -display :0
   you must have read permission for the auth file.
   See also '-auth guess' and '-findauth' discussed below.

** If NO ONE is logged into an X session yet, but there is a greeter login
   program like "gdm", "kdm", "xdm", or "dtlogin" running, you will need
   to find and use the raw display manager MIT-MAGIC-COOKIE file.
   Some examples for various display managers:

     gdm:     -auth /var/gdm/:0.Xauth
              -auth /var/lib/gdm/:0.Xauth
     kdm:     -auth /var/lib/kdm/A:0-crWk72
              -auth /var/run/xauth/A:0-crWk72
     xdm:     -auth /var/lib/xdm/authdir/authfiles/A:0-XQvaJk
     dtlogin: -auth /var/dt/A:0-UgaaXa

   Sometimes the command "ps wwwwaux | grep auth" can reveal the file location.

   Starting with x11vnc 0.9.9 you can have it try to guess by using:

              -auth guess

   (see also the x11vnc -findauth option.)

   Only root will have read permission for the file, and so x11vnc must be run
   as root (or copy it).  The random characters in the filenames will of course
   change and the directory the cookie file resides in is system dependent.

See also: http://www.karlrunge.com/x11vnc/faq.html

 --- x11vnc loop: sleeping 2000 ms ---


 --- x11vnc loop: 2 ---

E isso apenas se repete sem parar.

Está gritando comigo por não conseguir abrir a tela, mas funciona. Eu estou supondo que isso é porque o usuário restrito já executou este comando e ele se conectou bem, mas agora esse usuário está tentando fazer isso também, então ele não pode se conectar.

Por que isso está acontecendo? Há claramente algum buraco no meu entendimento. Aqui estão as diferentes coisas que eu tentei:

Redirecionando a saída para / dev / null

No mesmo local, /home/restricted/.profile tentei substituir o comando existente x11vnc -loop & por x11vnc -loop > /dev/null 2>&1 & .

Isso teve efeito zero, a saída ainda estava no terminal de outro usuário e (obviamente) não foi embora.

Comando de execução com nohup

Novamente em /home/restricted/.profile , tentei substituir o comando existente x11vnc -loop & por nohup x11vnc -loop & .

Mais uma vez, isso não teve efeito algum. A saída ainda estava lá. Nohup nem sequer criou um arquivo nohup.out. Pelo menos, não consegui encontrá-lo.

Por motivos de conclusão, eu também tentei nohup x11vnc -loop > /dev/null 2>&1 & novamente, nada mudou.

Iniciando x11vnc como um daemon

Aqui, comecei a perceber que estava fazendo algo errado. Eu percebi que talvez fosse porque /home/restricted/.profile era o lugar errado para colocar esse tipo de coisa. Então eu fiz um script em /etc/init.d para ser executado na inicialização e fiz o link com update-rc.d seguindo o exemplo do arquivo de esqueleto.

Mais uma vez, o x11vnc funcionou, mas a saída estava em todos os meus terminais.

Iniciando x11vnc na tela

Minha última tentativa de consertar isso foi jogar o comando em uma sessão de tela. Tela geralmente corrige problemas como este para mim ... Mas não desta vez.

Em /home/restricted/.profile , substituí x11vnc -loop & por screen -d -R x11vnc x11vnc -loop

Desta vez, x11vnc não funcionou mais (não foi possível conectar via cliente Windows), mas a saída estava AINDA em todos os terminais.

Novamente, claramente há algo que eu não entendo sobre o x11vnc ou sobre o processo de boot.

Como você pode ter percebido acima, estou nessa solução há algum tempo e não consigo encontrar mais nada na Web sobre isso. Então, a ajuda aqui seria incrível. Agradecemos antecipadamente.

    
por MD-7 20.05.2016 / 17:28

0 respostas

Tags