60 votes

Définition de l'umask de l'utilisateur Apache

Je suis en train de mettre en place un serveur LAMP et j'aimerais définir le paramètre umask d'Apache à 002 afin que tous les fichiers créés par Apache aient le bit de permission d'écriture de groupe défini (afin que les membres du même groupe puissent écraser les fichiers).

Quelqu'un sait-il comment faire ? Je sais que sous Ubuntu, vous pouvez utiliser le fichier /etc/apache2/envvars pour configurer l'umask, mais le serveur fonctionne sous CentOS.

Mise à jour Cette question est liée à une autre que j'ai posée il y a quelque temps ( Utilisateurs et groupes Linux pour un serveur LAMP ). Si vous le préférez, veuillez mettre à jour cette autre question en indiquant quelle est la meilleure configuration à utiliser pour avoir un utilisateur développeur sur un serveur qui peut modifier les fichiers créés par l'utilisateur apache.

3 votes

Je suis arrivé ici en cherchant à résoudre un problème avec Apache sur Ubuntu 10.04 LTS. À l'origine, l'ajout de /etc/apache2/envvars n'a pas fonctionné. Après avoir fait un 'apt-get update' et 'apt-get upgrade' et un redémarrage. Cela a commencé à fonctionner comme prévu. (Notez que la version d'apache est maintenant répertoriée comme "2.2.14-5ubuntu8.4" peur que je n'ai pas tiré ce qu'il était avant). Quoi qu'il en soit, si vous avez des problèmes, essayez la mise à niveau.

1 votes

Sur Ubuntu, je n'ai pas réussi à le faire fonctionner en redémarrant simplement en utilisant apache2ctl restart (o apache2ctl graceful ). Mais arrêter puis redémarrer a fonctionné... service apache2 restart a également fonctionné ( service apache2 graceful ne l'a pas fait).

121voto

Patrick Fisher Points 3979

Pour CentOS et les autres distros Red Hat, ajoutez le paramètre umask à /etc/sysconfig/httpd et redémarrez apache.

\[root ~\]$ echo "umask 002" >> /etc/sysconfig/httpd
\[root ~\]$ service httpd restart

Plus d'informations : Apache2 umask | MDLog:/sysadmin

Pour les systèmes Debian et Ubuntu, vous devez éditer de la même manière /etc/apache2/envvars .

1 votes

Merci, cela a fonctionné pour moi. Est-il possible de définir l'umask par le biais d'une configuration de serveur virtuel ?

0 votes

Non, vous ne pouvez pas définir l'umask du processus apache via la configuration d'un serveur virtuel.

3 votes

Sur Ubuntu, je n'ai pas réussi à le faire fonctionner en redémarrant tout simplement en utilisant apache2ctl restart (o apache2ctl graceful ). Mais arrêter puis redémarrer a fonctionné... service apache2 restart a également fonctionné ( service apache2 graceful ne l'a pas fait).

10voto

Martin v. Löwis Points 61768

Apache hérite de son umask de son processus parent (c'est-à-dire le processus qui démarre Apache) ; il s'agit généralement de la commande /etc/init.d/ script. Donc, mettez un umask dans ce script.

1 votes

Parfait. Fonctionne bien sur Debian avec Apache 2 (le nom du script à modifier est /etc/init.d/apache2 dans ce cas)

16 votes

La réponse de Patrick Fisher ci-dessous donne de bien meilleurs conseils car modifier directement les scripts init d'apache est dangereux - tous vos changements pourraient être perdus lors de la prochaine mise à jour.

0 votes

Où dois-je mettre exactement umask dans ce fichier ?

3voto

Ferenc Wágner Points 21

Ajout d'un umask commande a /etc/apache2/envvars ne me semble pas être une bonne idée, non seulement en raison du nom du fichier (qui ne mentionne que des variables) mais aussi en fonction de ce commentaire trouvé dans ce fichier :

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.

Cela suggère que /etc/apache2/envvars peut être utilisé par n'importe quel script effectuant des tâches liées à Apache, et changer l'umask de ces scripts (inconnus au préalable) est plutôt dangereux.

D'autre part, dans le cas où l'idée de modifier l'umask d'Apache vise à assouplir les permissions des fichiers créés par mod_dav vous devez considérer que le référentiel DAV est considéré comme privé pour Apache. et laisser d'autres processus accéder à ces fichiers peut conduire à diverses questions (y compris la corruption) .

0voto

user1414555 Points 56

Pour Ubuntu, il existe un outil svnwrap

  1. Installer sudo apt-get install subversion-tools
  2. Enveloppe svn et svnserve avec svnwrap :
    sudo ln -s /usr/bin/svnwrap /usr/local/bin/svn
    sudo ln -s /usr/bin/svnwrap /usr/local/bin/svnserve

Après cela, toutes les opérations svn utilisant les protocoles file://, svn+ssh:// et http:// seront effectuées avec le umask 002.

-13voto

Rob Wells Points 21714

Il n'est généralement pas recommandé de s'éloigner de la "méthode Apache", qui a fait ses preuves. Beaucoup de temps et d'expérience durement gagnée ont été consacrés à la sélection de telles choses.

3 votes

J'ai dû m'endormir quand ce mémo a été diffusé. Des liens vers la méthode éprouvée ?

0 votes

@Maine, ce n'est pas du FUD. Google umask 002 apache et faites votre choix.

0 votes

DavidWinterbottom, c'est la politique du site auquel je suis associé depuis le milieu des années 90. Le troisième plus grand site web du monde.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X