sviluppo-web-qa.it

come usare xauth per eseguire applicazioni grafiche tramite altri utenti su linux

Il mio account utente normale è, diciamo, utente1. Ho creato user2 separato per alcune applicazioni x che vorrei eseguire mentre accedevo a x come user1 ma in un modo che gli impediva l'accesso in lettura/scrittura ai dati user1. Ho pensato che avrei potuto usare xauth e Sudo/su a user2 da user1 per eseguire questa applicazione. Come faccio a fare questo? Non sono sicuro di come configurare xauth.

48
Phil

Ho trovato qualcosa che funziona alla grande su KDE

kdesu -u username /path/to/program
2
Phil

Per usare xauth selettivamente, come esecuzione utente1:

xauth list|grep `uname -n`

Questo stampa le voci di autorizzazione hexkey per te. Tu potresti avere diversi display associati anche a quegli host.

Come utente2 imposta il display (presupponendo il caso predefinito):

DISPLAY=:0; export DISPLAY

Quindi eseguire:

xauth add $DISPLAY . hexkey

Nota il punto dopo $ DISPLAY e prima dell'esagono.

Quando l'accesso non è più necessario, come utente2 è possibile eseguire:

xauth remove $DISPLAY
33
Randall

Ho inserito il mio .zshrc una riga con export XAUTHORITY=~/.Xauthority e ora sono in grado di eseguire Sudo -E xcommand. Dopo aver fatto molte ricerche su Google, per me questo è stato il modo più semplice.

12
kfl62

Primo: non utilizzare xhost +, è piuttosto insicuro (coperta consenti/nega).

Piuttosto usa il meccanismo X-Cookie:

su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority 
export DISPLAY=:0

In alternativa, se hai sux installato, usa quello (vedi la risposta di ehempel).

In entrambi i casi user2 utilizzerà il cookie segreto in .Xauthority per autorizzare il server X e nessun altro avrà accesso ad esso.

Appunti:

  • A seconda delle autorizzazioni dei file, potrebbe essere necessario copiare .Xauthority in qualche altro modo.
  • Invece di copiare .Xauthority, puoi anche usare xauth per estrarre e copiare la chiave di autorizzazione (vedi la risposta di Randall). Se hai più chiavi in ​​.Xauthority file questo è più selettivo; altrimenti è una questione di gusti.
9
sleske

Supponendo che debian o ubuntu (dovrebbe essere simile su Red Hat/SUSE).

Sudo apt-get install sux
sux user -c 'command'
9
ehempel

Questo risolverà il problema per tutti gli utenti:

cat <<EOF > /etc/profile.d/xauth.sh
#!/sbin/bash
export XAUTHORITY=~/.Xauthority
EOF
7
JMS

Come root:

xhost local:yourusername

Dove yourusername è il tuo nome utente :)

Quindi fai su come l'utente xclock dovrebbe funzionare se è installato

4
ACV

Questi sono solo hack:

  • xauth + (non sicuro)
  • ssh -X user2 @ localhost (brutto)

sleske sopra ha, penso, la soluzione adeguata.

2
alex

In questo modo realizzato in suse/opensuse: http://www.novell.com/support/kb/doc.php?id=700374

Semplicemente modificando /etc/pam.d/su, aggiungendo l'opzione (grassetto):

sessione opzionale pam_xauth.so systemuser = 1

Quindi puoi passare a su senza -:

su user2

ed esegui graficamente l'app.

0
pojem