Quelles autorisations sont nécessaires pour apache Passenger
Sous Ubuntu 10.04 sur Linode, RVM, Rails 3, Apache avec le Passager module, carrierwave et mini-magick
J'obtiens:
Rails Error: Unable to access log file. Please ensure that /srv/www/mysite.com/testapp/log/production.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.
et Errno::EACCES (Permission denied /srv/www/mysite.com/testapp/public/uploads/tmp/20110517-1707-2938-6455):
J'ai couru chmod -R root:root /srv/www/mysite.com/testapp
Alors: chmod -R www-data:www-data /srv/www/mysite.com/testapp
& chmod -R www-data:www-data /srv/www/mysite.com/testapp/public/uploads
Depuis les 2 seuls les répertoires qui doit être accessible en écriture, c'est le journal de fichiers et de répertoire uploads j'ai essayé de sécuriser le reste. Existe-il d'autres dossiers /fichiers que j'ai besoin pour le rendre accessible en écriture?
source d'informationauteur pcasa | 2011-05-17
Vous devez vous connecter pour publier un commentaire.
Autorisations sur les sites web est un peu étrange: d'une part, le contenu doit être lisible par le serveur web et
FastCGI
ouPassenger
ou quel que soit l'exécute (dans ce cas, Ruby) du code. D'autre part, si l'utilisateur du serveur web possède les fichiers, puis un serveur web piraté ou (plus probablement 🙂 votre code pourrait modifier les fichiers exécutables et les fichiers statiques de votre site web. Il arrive trop souvent.Si le contenu du site est la propriété de un autre utilisateurpas accessible en écriture par le serveur web logiciel, le site web ne peut pas être écrasé par les attaquants. (Bien sûr, vous avez un peu de sockets ouverts à une connexion de base de données; tous la base de données adossés à des données peuvent être corrompues par des attaquants. Aussi, n'importe quel répertoire où vous autorisez le téléchargement peut être endommagé par des attaquants. Mais l'objectif est de réduire les privilèges du logiciel dans la mesure du raisonnable.)
Donc, tout ce que dit, à votre question spécifique; votre logiciel de serveur web s'exécute en tant que
www-data
et cela a du sens pour vos fichiers de log et le répertoire de téléchargement d'être détenues par deswww-data
:J'ai fait l'hypothèse que tous les utilisateurs sur votre système peut lire le journal. Cela pourrait ne pas être vrai. Utilisation
700
en place de755
et600
en place de644
si vous ne voulez pas que tous les utilisateurs du système pour lire les fichiers journaux.Prochaine, pour votre
uploads
répertoire:Encore une fois, j'ai fait l'hypothèse que tous les utilisateurs sur votre système peut être en mesure de voir tout le contenu téléchargé. Utilisation
700
en place de755
si vous voulez juste le logiciel de serveur web pour être en mesure de lire les fichiers.Ce sont de simples lignes directrices qui devraient travailler; vous pouvez obtenir plus compliqué si vous voulez garder le site web du logiciel et du contenu partagé uniquement entre l'utilisateur que possède le site et l'utilisateur qui s'exécute le site web, en exécutant le serveur web avec un groupe supplémentaire (voir
newgrp(1)
etgroup(5)
les pages de manuel pour plus de détails) et de donner les fichiers de la même propriétaire de groupe, et à l'aide de l'autorisation de groupe de bits (au moyen nombre octal:750
vs700
). C'est assez compliqué, à moins que vous avez une bonne raison, c'est probablement pas la peine d'aller en bas de cette route. (Certainement la peine de faire une fois sur une machine de développement, quelque part, juste si vous êtes assez familier avec ce que vous pouvez l'utiliser dans l'avenir. 🙂