Come root, posso usare su per apportare modifiche a dconf per un altro utente. Come faccio ad applicarli?

5

Lo scenario seguente presuppone che abbiamo avviato il computer e effettuato l'accesso come bort utente nel menu di accesso. Questo è il 14.04.2.

Se apro un terminale, come l'utente bort posso elencare un'impostazione dconf, per esempio

$ dconf read /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode
0

Se dovessi usare dconf write per cambiare il valore a 1 il menu sul lato sinistro dello schermo sarebbe nascosto

$ dconf write /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode 1
$ dconf read /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode
1

Ora il menu è nascosto. Ora supponiamo di usare dconf write per riportarlo su 0. Il menu apparirà di nuovo.

Ora, se fossi in un terminale come root utente e ho provato a usare su bort -c per modificare il valore di bort, POSSO cambiarlo. Lo so perché in un altro terminale dove sono la bort utente, posso usare dconf leggere e vedere che il valore è cambiato in 1. Quindi il valore è stato cambiato MA il menu sul lato sinistro dello schermo è ancora visibile. Come posso applicare effettivamente la modifica anziché essere semplicemente aggiornata nel database di dconf? In definitiva, voglio sapere questo per l'uso con il tipo exec di Puppet, ma essere in grado di farlo come root dal terminale sarebbe utile per raggiungere questo obiettivo.

Come root in un terminale:

# su bort -c "/bin/sh -c '/usr/bin/dconf write /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode 1'"

Come bort in un terminale dopo l'esecuzione del comando precedente:

$ dconf read /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode
1

Eppure il menu è ancora lì. So che questo tipo di domande ha alcune risposte su questo sito, come usare dbus-launch ma questo non ha funzionato per me. Forse è specifico per la versione di Ubuntu?

    
posta Bort 01.08.2015 - 04:25

1 risposta

3

Non hai la variabile di ambiente DBUS_SESSION_BUS_ADDRESS impostata, quindi le modifiche non si bloccano. Come utente, annota l'output di

echo $DBUS_SESSION_BUS_ADDRESS

e quindi nel comando root usare

export DBUS_SESSION_BUS_ADDRESS=xxxxx && dconf write ...

che dovrebbe funzionare.

Dopo aver combattuto il loro zoppo tentativo di nascondere un po 'il socket, una soluzione funzionante per ottenere automaticamente l'indirizzo è di prenderla in prestito tramite un ambiente di processo:

# requires a GUI session program that will always run:
p='pgrep -u \'whoami\' gnome-panel'

r='grep -z DBUS_SESSION_BUS_ADDRESS /proc/$p/environ | sed 's/^[^=]*=//''
export DBUS_SESSION_BUS_ADDRESS=$r

Ovviamente dovresti scegliere qualcosa di diverso da gnome-panel se non lo stai facendo.

Funziona anche per SSH_AUTH_SOCK. Lascialo solo qui in modo che possa aiutare le persone che finora hanno cercato su Google senza successo (come me;)).

    
risposta data Donjan Rodic 04.07.2016 - 20:08

Leggi altre domande sui tag