GNU/Linux >> Linux Esercitazione >  >> Linux

Avviare un programma grafico sul desktop di un altro utente come root?

Di seguito sono riportate altre domande che penso di dover sapere:

  • Da una sessione non X? (significa che root non è connesso a X)

  • Se più persone hanno effettuato l'accesso su X, posso rilevare automaticamente chi si trova su quale schermo e quindi rilevare in modo programmatico su quale schermo ho bisogno per avviare l'app?

  • Posso avviare l'app come utente? (ok, sono sicuro al 99,999% che questo sia un sì)

  • Posso rilevare se gli utenti del gruppo X hanno effettuato l'accesso a X?

Risposta accettata:

Per avviare un programma grafico sul desktop di un utente, devi trovare due cose:su quale display si trova il desktop dell'utente (l'indirizzo) e quale cookie di autorizzazione utilizzare (la password).

Il comando seguente dovrebbe elencare i display locali a cui l'utente ha effettuato l'accesso (uno per riga) sulla maggior parte degli unice:

who | awk -v user="$target_user" '$1 == user && $2 ~ "^:" {print $2}'

Trovare il cookie di autorizzazione è un po' più difficile. Devi cercare il file cookie dell'utente, che è ~/.Xauthority per impostazione predefinita (tutto ciò che serve è la posizione del file cookie, non è necessario estrarre il cookie da esso). Funziona su molti sistemi, ma non su tutti; dipende dal display manager e da come è impostato, e in particolare Gdm (l'impostazione predefinita su Ubuntu) non ha utilizzato la posizione predefinita l'ultima volta che ho guardato. Non riesco a pensare a un modo portatile per scoprire il vero file cookie X. Il modo più accurato per scoprirlo è scoprire il pid del processo X e cercare l'argomento per -auth opzione. Un altro modo è trovare un processo in esecuzione su quel server X e prendere il suo XAUTHORITY variabile d'ambiente. Se hai problemi a trovare il file cookie, consulta Aprire una finestra su un display X remoto (perché "Impossibile aprire il display")?

Una volta che hai entrambe le informazioni, inserisci il display scelto nel DISPLAY variabile di ambiente, il file cookie di autorità X scelto nel XAUTHORITY variabile di ambiente e sei a posto. Non importa quale utente viene eseguito dal programma; combinare con su se ti va.


Linux
  1. Come eseguire un programma specifico come root senza una richiesta di password?

  2. "errore durante la costruzione del proxy ..." Quando si tenta di avviare Gnome-terminal come root?

  3. Come avviare un set di programmi all'interno di Tmux o Gnome-terminal all'interno di uno script?

  4. Come posso avviare un programma come root usando il window manager?

  5. App GUI senza un desktop grafico

Due strumenti grafici per manipolare i PDF sul desktop Linux

Recensione dell'utente su Linux Lite 3.0:desktop Linux semplice, veloce e gratuito

Aggiornamento di ISPConfig 3.1 a ISPConfig 3.2

Gotop - Ancora un altro monitor di attività grafico TUI, scritto in Go

Come passare dall'utente root a un altro utente che ha una shell Nologin?

Avvia sempre Terminal come utente root (sudo) in Ubuntu