Come eseguire un'applicazione come un altro utente?


17

Uso krusader per la gestione dei file. il problema è che gli apache DocumentRootdovrebbero essere sotto chown www-data:www-data /path/to/www. quindi usando krusader (che viene eseguito con il mio account) non ho accesso in scrittura /path/to/wwwmentre ne ho davvero bisogno. Non so come altri sviluppatori possano continuare a fare le cose con una tale restrizione!

Mi chiedevo se avrei potuto eseguire Krusader in quanto www-dataallora sarei in grado di giocare facilmente con i file. ma usando su - www-datami ha chiesto www-datala password !!

Quindi, come posso eseguire un'applicazione (come krusader) come un altro utente (come www-data) in Gnome?

o c'è qualche altra soluzione per il mio caso? (difficile sono davvero curioso di conoscere la risposta!)

tieni presente che so che posso eseguirlo come root ! ma questo causerà alcuni problemi di autorizzazione durante l'utilizzo cpe mkdir, lo sai.

PS: sudo e gksudonon ha aiutato:

$ gksudo -u -www-data krusader
No protocol specified
krusader: cannot connect to X server :0.0

Nota finale: secondo la migliore risposta, l'ho fatto chmod u+w /path/to/wwwe il mio problema è stato risolto. ma non sono ancora riuscito ad aprire krusader come un altro utente!

Risposte:


4

Ripensando a questa domanda (spero di aver capito bene il tuo problema, ma correggimi se sbaglio), ho trovato un'altra soluzione e penso che non sia necessario eseguire l'applicazione come dati www né giocare con le autorizzazioni . L'hai detto tu:

DocumentRoot di Apache dovrebbe essere sotto i dati www: data-dati / percorso / a / www

ma in realtà, questo non è del tutto vero: gli Apache DocumentRootdevono essere leggibili www-data, ma non necessariamente di loro proprietà. Per impostazione predefinita, in Ubuntu Desktop, tutti i file e le directory creati sono leggibili da tutti, quindi è possibile impostare DocumentRoot su una directory all'interno della cartella principale, ad esempio:

DocumentRoot /home/user/my-project/my-document-root

Grazie! ha appena funzionato. e la tua spiegazione del perché questo avrebbe funzionato, è stata molto utile. dato che questo ha risolto il mio problema, ma sono ancora curioso di sapere come posso aprire Krusader come un altro utente. altre soluzioni non funzionavano.
Alexar,


5

Se stai eseguendo questo dal sistema di menu ti consigliamo di utilizzare alacarte(Sistema> Preferenze> Menu principale) e modificare la voce per krusader e aggiungere davanti ad essa: gksudo -u www-datache dovrebbe produrre qualcosa come:

gksudo -u www-data krusader

Questo avvierà la finestra del prompt delle attività amministrative che, secondo la Manpage GKSudo , è a

GTK + Frontend per su e sudo

L'uso di gksudo senza l' -uopzione eseguirà il comando come root.


grazie, ma restituisce: Nessun protocollo specificato
krusader

2
prima di avviare il comando gksudo, nel terminale sotto il tuo account esegui:xhost +
jet

4

Come menzionato Marco, è possibile utilizzare gksudo -u www-data <command>per eseguire comandi come un altro utente. Lo uso abitualmente per eseguire i comandi gdme finora non mi ha mai chiesto altro che la mia password.

Se stai usando kde l'equivalente è kdesu -u www-data krusader.Penso, dal momento che krusader è un'applicazione kde, potrebbe funzionare meglio con kdesu. Maggiori dettagli su kdesu qui .

Ho usato gksudoper eseguire comandi come altri utenti "umani" sul sistema e quando mi viene richiesta la password, scrivo il mio.


grazie, ma il risultato è gksudo: nessun protocollo specificato
krusader

Probabilmente per krusader (un'app kde), kdesuè una scelta migliore. Ho aggiornato la mia risposta. Puoi provarlo?
Koushik,

4

Per diventare www-data con la tua password, usa questo:

$ sudo su www-data
[sudo] password for <your username>: [enter your password]
$ whoami
(you should see www-data here)

Ma non credo che sarai in grado di eseguire app GUI da lì ..

Di solito possiedo solo tutto /var/www, ma consento l'accesso in lettura a tutti:

/var/www$ sudo chown -R [your-username]\:[your-group] *
/var/www$ find . -type d -exec chmod a+rx {} \;
/var/www$ find . -type f -exec chmod a+r {} \;

Spero che questo allevierà il tuo dolore :)


come hai indovinato, non ho potuto eseguire app GUI da lì. si sayedNo protocol specified krusader: cannot connect to X server :0.0
Alexar

La seconda soluzione non è un'opzione per te? I tuoi dati non devono essere di proprietà di www-data, anche se immagino che sia preferito.
Dott. Annibale Lecter,

3

Credo che al terminale sia necessario eseguire quanto segue:

xhost +SI:localuser:<user-to-run-as>

Quindi puoi fare:

sudo su - <user-to-run-as>

E infine, esegui la tua app:

krusader

Dovrebbe farlo, assicurati di sostituirlo <user-to-run-as>con il tuo nome utente ovviamente.


0

Sia 'gksu' che 'kdesu' sono frontend grafici per 'sudo', che è lo strumento che dovresti usare quando ti trovi in ​​un ambiente di solo testo. Gli strumenti 'gksu' e 'kdesu' richiedono di essere in modalità grafica, il che spiega gli errori "impossibile connettersi al server X".

se si desidera eseguire un comando console come utente diverso, utilizzare il comando 'sudo -u nome utente comando'.


grazie, lo eseguo e dice che qualcosa del genere [1] 12100sembra essere l'id del processo; ma non vedo nulla in azione.
Alexar,

0

L'esecuzione di un'applicazione grafica in www-data ti dà diversi problemi. Una cosa che puoi fare è aggiungerti al gruppo www-data, così sarai in grado di cambiare tutti i file di cui hai bisogno:

sudo adduser $USER www-data

Nota: probabilmente, sarà necessario disconnettersi dalla sessione per rendere effettive le modifiche.

Se, dopo questo comando, non riesci ancora a modificare alcuni file, assicurati di disporre dei permessi di scrittura su di essi:

sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file

tuttavia non è una soluzione al problema generale ma sembra funzionare per il mio caso; Ci proverò e
riferirò

0

Ispirato da Anton S. Kraievoy ho usato una soluzione simile, che funziona per me. Nell'utente, che usando Krusader ho aggiunto un nuovo utente a xhhost:

xhost +SI:localuser:username

Quindi gentilmente accedi:

su - username

Than krusader si avvia correttamente come nuova istanza in un nuovo utente:

krusader

Si noti che verrà creata una nuova configurazione in ~ / .kde / share / config / krusaderrc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.