Rails 3. l'obtention de Errno::EACCES l'Autorisation Refusée lors du téléchargement de fichiers sur la production
L'application fonctionne très bien dans le développement, mais dans la production-je obtenir Errno::EACCES Permission Denied erreur quand j'essaie de télécharger un fichier à l'aide de Carrierwave. Je suis sûr qu'il a quelque chose à voir avec les autorisations. Comment puis-je définir les autorisations pour permettre l'upload de fichiers?
pdf_uploader.rb
def store_dir
"#{Rails.root}/uploads/#{model.id}"
end
def cache_dir
"#{Rails.root}/tmp/uploads/cache/#{model.id}"
end
est-ce heroku ou d'un autre service?
c'est une application à l'aide de ActiveAdmin. Il utilise CarrierWave pour l'upload de fichiers. J'utilise Apache et le Passager.
J'ai été faire
c'est une application à l'aide de ActiveAdmin. Il utilise CarrierWave pour l'upload de fichiers. J'utilise Apache et le Passager.
J'ai été faire
Errno::EACCESS
sur /uploads
.. ma solution était d'ajouter #{Rails.root}/public/
à la store_dir
méthode. 🙂 J'espère que l'aide à quelqu'un!OriginalL'auteur leonel | 2012-01-13
Vous devez vous connecter pour publier un commentaire.
Non, c'est normal de faire ce genre de répertoire accessible en écriture pour les autres utilisateurs.
Il est dangereux, parce que permettre à tous les utilisateurs aussi inconnu tout fait, alors que la véritable solution est de changer l'utilisateur et les groupes de votre dossier app à apache d'utilisateur et de groupe, dans la plupart des cas, est www-data.
Je voudrais utiliser
666
sur777
. Jamais, jamais, jamais utiliser777
et vous devriez être bien.Il n'est pas normal de le faire. La configuration de chaque fichier exécutable, lisible et accessible en écriture par tout le monde.
OriginalL'auteur alexkv
Autant que je sache, il y a deux choses qui peuvent se passer ici:
1) Le répertoire que vous êtes en train d'enregistrer vos images n'ont pas de privilèges de lecture/écriture pour les autres utilisateurs.
À corriger:
terminal
ou si vous êtes en train d'enregistrer vos images dans un répertoire privé:
Nous utilisons plus de 666 777. 666 permet de lire et d'écrire des privilèges à un répertoire, et carrierwave doit écrire ses images. 777 permet de lire, d'écrire des privilèges et pour des fichiers exécutables à être exécuté! En d'autres termes, un programme méchant pourrait être téléchargés sur votre serveur déguisé en image si vous utilisez 777. Même si carrierwave de l'extension de white-list permet de résoudre ce problème, vous devez toujours utiliser plus de 666 777.
2) Vous n'êtes pas à l'aide de chaînes entre guillemets doubles dans la
store_dir
méthode.À corriger:
app/example_uploader.rb
Veux juste souligner la subtilité c'est. Vous besoin de chaînes entre guillemets doubles et
Rails.root
! J'ai fait ça:et il ne fonctionnait pas à tous. De manière subtile. La communauté devrait aborder cette question.
OriginalL'auteur Starkers
Uhm, j'ai eu le même problème avec un serveur ubuntu. Le téléchargement d'un fichier avec carrierwave et puis d'essayer de la lire avec roo (un bijou pour les fichiers excel).
Autorisations ont été chmod de 777 sur le répertoire et le fichier est créé sur ok. Je crois que les questions lors de la lecture du chemin d'accès au magasin.
Bien que tout fonctionne bien lors de l'exécution de la même application sur mon mac.
OriginalL'auteur Hiromichan
Nous avons besoin d'accorder des autorisations pour accéder le répertoire requis pour le système de l'utilisateur root
Pour des raisons de sécurité, il suffit de garder dans votre esprit:
chmod 777
donne à tout le monde de lire, d'écrire et d'exécuter des droits qui, pour la plupart des problèmes est définitivement trop.OriginalL'auteur Jai Kumar Rajput