Comment faire fonctionner Apache en tant qu'utilisateur actuel

44

Je pense que pour une machine de développement, il est plus pratique d'exécuter Apache en tant qu'utilisateur actuel pour simplifier le problème des autorisations? Comment je fais ça? Je pense que c'est suexec, mais comment puis-je le configurer dans Ubuntu + Apache?

Jiew Meng
la source

Réponses:

28

J'ajouterais moi-même l'utilisateur au www-datagroupe avec ...

sudo adduser {username} www-data

Simple et efficace Pas de problème avec les fichiers de configuration ou les autorisations.

Rinzwind
la source
6
Je l'ai fait tout le temps, mais cela ne résoudra pas certains problèmes d'autorisation refusée, car les droits du groupe ne sont pas identiques à ceux de l'utilisateur pour tous les fichiers.
Kostanos
1
Cela ne résoudra pas le problème si CHMOD n'autorisait pas le groupe à écrire.
GusDeCooL
le problème pour moi est que j'ai une installation locale. Quand je crée des fichiers avec mon IDE, ils ont mon "utilisateur / groupe" et parfois Apache ne peut pas lire ces fichiers
Postadelmaga le
cela seul ne résout pas beaucoup de problèmes d'autorisations car votre groupe principal n'est normalement pas www-data et certaines applications php nécessitent des autorisations d'écriture de groupe. (joomla, wordpress)
Eric
2
Cela ne résout pas le problème suivant: vous créez des fichiers et www-data ne peut pas les supprimer / éditer car votre groupe principal n'est pas www-data
billy
57

Editez le fichier suivant en tant que root: / etc / apache2 / envvars

en utilisant la commande:

sudo nano /etc/apache2/envvars

changez l'utilisateur et le groupe pour vous-même s'il n'y a qu'un seul utilisateur et que vous n'aurez plus jamais de problèmes d'autorisations.

Par exemple, si vous vous connectez et exécutez le serveur uniquement en tant qu'utilisateur 'big_dog':

export APACHE_RUN_USER=big_dog
export APACHE_RUN_GROUP=big_dog

Heck, d'ailleurs, vous pourriez changer cet utilisateur à l'utilisateur actuel, j'en suis sûr. Ensuite, installez user_dir, vous possédez tous des sites Web que vous pouvez contrôler (sauf si vous le modifiez).

Redémarrez le serveur (en cas de doute, redémarrez ou allez-y) et vous pourrez continuer.

Eric
la source
3
Cela fonctionne comme un charme! Je vous remercie. la seule que je voudrais ajouter:sudo chown big_dog.big_dog /var/lock/apache2
Kostanos
3
Aussi probablement vous aurez besoinsudo chown big_dog.big_dog -R /var/log/apache2
Kostanos
Sur OpenSUSE-Tumbleweed (et probablement sur d'autres), le fichier est à/etc/apache2/uid.conf
Dilawar
Vous n'avez pas nécessairement besoin de changer le fichier envvars, je viens de mettre à jour les variables d'environnement avant de lancer Apache avec un script. De cette façon, vous n'êtes pas verrouillé par un seul utilisateur, mais qui a déjà exécuté le script, exécute apache. J'avais l'habitude export APACHE_RUN_USER=#$(id -u)de donner l'ID utilisateur et de même utiliser id -gpour le groupe dans le script et à la fin j'ai appelé apache à exécuter.
inblueswithu
1

pourquoi voudriez-vous faire cela, je me débattais avec ces problèmes de perm dans le passé, mais ceci est mon processus de développement à partir d'aujourd'hui:

  • installez un nouveau linux box (virtuel ou local comme un ordinateur portable)
  • exécuter sudo apt-get install lamp-server^proc standard pour obtenir lampe
  • faire un lien sym à mon répertoire personnel où les projets sont comme ceci:

    ln -s /home/user/html /var/www/html

  • créer un lien sym vers le fichier de configuration des hôtes

    ln -s /home/user/html/Apache-VirtualHosts.conf /etc/apache/sites-enabled/000-default

c'est ça :)

Cela fonctionne comme aspected, aucun problème avec les permanentes d'utilisateur ou quelque chose de similaire avec le serveur apache, pour mysql j'ai peu de processus plus long ..

hth, à la vôtre

Kresimir Pendic
la source
Cela ne résout aucun des problèmes d'autorisation abordés dans la plupart des autres réponses.
HörmannHH
0

En joignant le problème "si vous faites cela", vous pouvez trouver l'emplacement de l'utilisateur pour Apache en exécutant:

grep www- /etc/apache2/apache2.conf

Il s’agit ensuite de modifier ces instances /etc/apache2/apache2.confet de recharger Apache ( sudo /etc/init.d/apache2 reload).

Oli
la source
apache2.confne contient pas www-pour moi
Jiew Meng
J'ai l'impression que vous vouliez dire quelque chose comme grep -HR "www-" /etc/apache2/. Si vous savez déjà qu'il se trouve dans apache2.conf, éditez simplement ce fichier. Dans mon cas, ce n'était pas là, mais dans / etc / apache2 / envvars comme le souligne la réponse d'Eric.
Mike
C'est parce que apache.confcherche ${APACHE_RUN_USER}et ${APACHE_RUN_GROUP}. Pas www-datadirectement.
Yahya Uddin
0

créer un nouveau groupe d'utilisateurs webdevet y ajouter l' www-datautilisateur.

sudo addgroup webdev
sudo adduser www-data webdev

Ensuite, ajoutez votre utilisateur à ce groupe et faites-en le groupe par défaut pour votre utilisateur.

sudo adduser {your-user} webdev
sudo addgroup webdev

La dernière chose à faire est de s’assurer que le groupe webdev a les droits rwx sur les fichiers

sudo chmod 775 -R /path/to/project

Maintenant, la seule chose qui peut se produire est que, par exemple, www-data crée un nouveau fichier journal et vous ne pouvez pas le télécharger.

Thomas Venturini
la source
1
Quel est l'avantage de cela, par rapport à l'ajout de mon propre utilisateur au www-datagroupe, d'autant plus qu'il s'agit d'un environnement de développement?
Dan
Eh bien, si vous le faites de cette façon, et définissez les droits 775 sur, par exemple, public_html ou / var / www, vous ne rencontrerez aucun problème avec les droits sur votre machine de développement. les autres approches, vous laisser avec des étapes supplémentaires à faire ou ne sont pas aussi efficaces que je ne les veux pas. Donc, à mon avis, c'est la meilleure façon de gérer cela sur une machine de développement. pour des serveurs productifs, je recommanderais une configuration différente. également avec cette approche, vous pouvez facilement ajouter des utilisateurs.
Thomas Venturini