Comment exécuter une application en tant qu'autre utilisateur?

17

J'utilise krusader pour la gestion des fichiers. le problème est que les apaches DocumentRootdevraient être sous chown www-data:www-data /path/to/www. donc en utilisant krusader (qui est exécuté sous mon compte), je n'ai pas accès en écriture /path/to/wwwalors que j'en ai vraiment besoin. Je ne sais pas comment les autres développeurs peuvent continuer à faire des choses avec une telle restriction!

Je me suis demandé si je pouvais exécuter krusader car www-dataje pourrai facilement jouer avec des fichiers. mais en utilisant su - www-datam'a demandé www-datale mot de passe !!

Alors, comment puis-je exécuter une application (comme krusader) en tant qu'un autre utilisateur (comme www-data) dans Gnome?

ou existe-t-il une autre solution pour mon cas? (difficile, je suis vraiment curieux de connaître la réponse!)

gardez à l'esprit que je sais que je peux l'exécuter en tant que root ! mais cela entraînera des problèmes d'autorisation lors de l'utilisation de cpet mkdir, vous savez.

PS: sudo et gksudon'a pas aidé:

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

Note finale: selon la meilleure réponse, je l'ai fait chmod u+w /path/to/wwwet mon problème a été résolu. mais je n'ai toujours pas réussi à ouvrir krusader en tant qu'autre utilisateur!

Alexar
la source

Réponses:

4

En repensant à cette question (j'espère avoir bien compris votre problème, mais corrigez-moi si je me trompe), j'ai trouvé une autre solution et je pense que vous n'avez pas besoin d'exécuter l'application en tant que www-data ni de jouer avec les permissions . Vous avez dit que:

Le DocumentRoot d'Apache doit être sous chown www-data: www-data / path / to / www

mais en réalité, ce n'est pas tout à fait vrai: Apache DocumentRootdoit être lisible par www-data, mais ne lui appartient pas nécessairement. Par défaut, dans Ubuntu Desktop, tous les fichiers et répertoires que vous créez sont lisibles par tout le monde, vous pouvez donc définir votre DocumentRoot dans un répertoire à l'intérieur de votre dossier personnel, par exemple:

DocumentRoot /home/user/my-project/my-document-root
Andrea Corbellini
la source
Merci! ça a juste fonctionné. et votre explication de la raison pour laquelle cela fonctionnerait a été très utile. car cela a résolu mon problème mais je suis toujours curieux de savoir comment puis-je ouvrir krusader en tant qu'un autre utilisateur. d'autres solutions n'ont tout simplement pas fonctionné.
Alexar
8
xhost +SI:localuser:uname
gksudo -u uname -l "firefox"
xhost -SI:localuser:uname

Où uname = le nom de l'utilisateur emprunté. Vu là: http://ubuntuforums.org/showthread.php?p=10399617

Fonctionne sur ma boîte non-conformiste, il n'y a pas de son dans le skype forké et ~ / .profile.d n'est pas exécuté comme il se doit.

Anton S. Kraievoy
la source
5

Si vous l'exécutez à partir du système de menus, vous voudrez utiliser alacarte(Système> Préférences> Menu principal) et modifier l'entrée pour krusader et l'ajouter devant: gksudo -u www-datace qui devrait produire quelque chose comme:

gksudo -u www-data krusader

Cela lancera la fenêtre d'invite de tâche administrative qui, selon la page de manuel GKSudo , est un

GTK + Frontend pour su et sudo

Utiliser simplement gksudo sans le -ucommutateur exécutera la commande en tant que root.

Marco Ceppi
la source
merci, mais il retourne: Aucun protocole spécifié
krusader
2
avant de lancer la commande gksudo, dans le terminal sous votre compte, exécutez:xhost +
jet
4

Comme Marco l'a mentionné, vous pouvez utiliser gksudo -u www-data <command>pour exécuter des commandes en tant qu'autre utilisateur. Je l'utilise régulièrement pour exécuter des commandes car gdm, jusqu'à présent, il ne m'a jamais demandé autre chose que mon propre mot de passe.

Si vous utilisez kde, l'équivalent est kdesu -u www-data krusader.Je pense que, puisque krusader est une application kde, cela pourrait mieux fonctionner avec kdesu. Plus de détails sur kdesu ici .

J'ai l'habitude gksudod'exécuter des commandes en tant qu'autres utilisateurs "humains" sur le système et lorsque je suis invité à entrer un mot de passe, je tape le mien.

koushik
la source
merci, mais le résultat est comme gksudo: Aucun protocole spécifié krusader: ne peut pas se connecter au serveur X: 0.0
Alexar
Probablement pour krusader (une application kde), kdesuest un meilleur choix. J'ai mis à jour ma réponse. Peux-tu essayer ça?
koushik
4

Pour devenir www-data avec votre propre mot de passe, utilisez ceci:

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

Mais je ne pense pas que vous pourrez exécuter des applications GUI à partir de là ..

Je possède généralement tout /var/www, mais j'autorise l'accès en lecture à tout le monde:

/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 {} \;

J'espère que cela soulagera votre douleur :)

dr Hannibal Lecter
la source
comme vous l'avez deviné, je ne pouvais pas exécuter d'applications GUI à partir de là. il a ditNo protocol specified krusader: cannot connect to X server :0.0
Alexar
La deuxième solution n'est-elle pas une option pour vous? Vos données ne doivent pas appartenir à www-data, même si je suppose que c'est préférable.
dr Hannibal Lecter
3

Je pense que vous devez exécuter ce qui suit sur le terminal:

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

Ensuite, vous pouvez faire:

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

Et enfin, lancez votre application:

krusader

Cela devrait le faire, assurez-vous simplement de le remplacer <user-to-run-as>par votre nom d'utilisateur bien sûr.

nicholas.alipaz
la source
0

'Gksu' et 'kdesu' sont des interfaces graphiques pour 'sudo', qui est l'outil que vous devez utiliser lorsque vous êtes dans un environnement de texte uniquement. Les outils 'gksu' et 'kdesu' nécessitent que vous soyez en mode graphique, ce qui explique les erreurs "impossible de se connecter au serveur X".

si vous souhaitez exécuter une commande de console en tant qu'utilisateur différent, utilisez la commande «sudo -u username command».

Sense Hofstede
la source
merci, je lance ça et ça dit quelque chose comme [1] 12100ça semble être l'identifiant du processus; mais rien que je vois en action.
Alexar
0

L'exécution d'une application graphique sous www-data vous pose plusieurs problèmes. Une chose que vous pouvez faire est de vous ajouter au groupe www-data, afin que vous puissiez modifier tous les fichiers dont vous avez besoin:

sudo adduser $USER www-data

Remarque: vous devrez probablement vous déconnecter de la session pour que la modification prenne effet.

Si, après cette commande, vous ne parvenez toujours pas à modifier certains fichiers, assurez-vous simplement que vous disposez d'une autorisation d'écriture sur eux:

sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file
Andrea Corbellini
la source
cependant ce n'est pas une solution au problème général mais cela semble fonctionner pour mon cas; je vais essayer et rapporter
Alexar
0

Inspiré par Anton S. Kraievoy, j'ai utilisé une solution similaire, qui fonctionne pour moi. Dans l'utilisateur, qui en utilisant Krusader j'ai ajouté un nouvel utilisateur à xhhost:

xhost +SI:localuser:username

Merci de vous connecter:

su - username

Que krusader démarre correctement en tant que nouvelle instance dans un nouvel utilisateur:

krusader

Notez qu'une nouvelle configuration sera créée dans ~ / .kde / share / config / krusaderrc.

hariprasad
la source