web-dev-qa-db-fra.com

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

J'utilise krusader pour la gestion de fichiers. le problème est que le DocumentRoot d'Apache devrait ê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/www tant que j’en ai vraiment besoin. Je ne sais pas comment d'autres développeurs peuvent continuer à faire des choses avec une telle restriction!

Je me demandais si je pouvais exécuter krusader avec www-data, ce qui me permettrait de jouer facilement avec des fichiers. mais en utilisant su - www-data m'a demandé le mot de passe de www-data !!

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

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

n'oubliez pas que je sais que je peux l'exécuter en tant que root! mais cela causera des problèmes d’autorisation lors de l’utilisation de cp et mkdir, vous savez.

PS:Sudo et gksudo n’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, j'ai chmod u+w /path/to/www et mon problème résolu. mais je n'ai toujours pas réussi à ouvrir krusader en tant qu'utilisateur supplémentaire!

17
Alexar

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:

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

mais en réalité, ce n'est pas tout à fait vrai: le DocumentRootd'Apache doit être lisible par www-data, mais ne doit pas nécessairement en être la propriété. Par défaut, dans Ubuntu Desktop, tous les fichiers et répertoires créés sont lisibles par tout le monde. Vous pouvez donc définir DocumentRoot dans un répertoire de votre dossier de base, par exemple:

DocumentRoot /home/user/my-project/my-document-root
4
Andrea Corbellini
xhost +SI:localuser:uname
gksudo -u uname -l "firefox"
xhost -SI:localuser:uname

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

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

8
Anton S. Kraievoy

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

gksudo -u www-data krusader

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

GTK + Frontend pour su et Sudo

Utiliser simplement gksudo sans le commutateur -u lancera la commande en tant que root.

5
Marco Ceppi

Comme Marco l'a mentionné, vous pouvez utiliser gksudo -u www-data <command> pour exécuter des commandes en tant qu'utilisateur différent. J'utilise couramment cela pour exécuter des commandes en tant que gdm et jusqu'à présent, il ne m'a jamais demandé d'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, il pourrait mieux fonctionner avec kdesu. Plus de détails sur kdesu ici .

J'ai utilisé gksudo pour exécuter des commandes en tant qu'autres utilisateurs "humains" sur le système et, lorsque le mot de passe est demandé, je saisis le mien.

4
koushik

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 serez capable de lancer des applications GUI à partir de là.

D'habitude, je ne possède que tout dans /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 :)

4
dr Hannibal Lecter

Je crois que vous devez exécuter ce qui suit au 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 remplacer <user-to-run-as> par votre nom d'utilisateur bien sûr.

3
nicholas.alipaz

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

xhost +SI:localuser:username

Merci de bien vouloir vous connecter:

su - username

Than krusader démarre correctement en tant que nouvelle instance chez un nouvel utilisateur:

krusader

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

0
hariprasad

'Gksu' et 'kdesu' sont tous deux des interfaces graphiques pour 'Sudo', qui est l'outil que vous devez utiliser lorsque vous vous trouvez dans un environnement 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 nom d'utilisateur commande'.

0
Sense Hofstede

L'exécution d'une application graphique sous www-data vous pose plusieurs problèmes. Vous pouvez vous ajouter au groupe www-data afin de pouvoir 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 les modifications prennent effet.

Si, après cette commande, vous ne parvenez toujours pas à modifier certains fichiers, assurez-vous simplement que vous disposez du droit d'écriture sur ceux-ci:

Sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file
0
Andrea Corbellini