OSError: Autorisation refusée lors de la configuration de django-filer

J’ai installé django-filer et je teste maintenant la fonction de téléchargement, mais lorsque j’essaie de télécharger un fichier, j’obtiens l’erreur suivante:

[Fri Jul 10 11:32:20 2015] [error] ERROR Internal Server Error: /admin/filer/clipboard/operations/upload/ [Fri Jul 10 11:32:20 2015] [error] Traceback (most recent call last): [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 112, in get_response [Fri Jul 10 11:32:20 2015] [error] response = wrapped_callback(request, *callback_args, **callback_kwargs) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/views/decorators/csrf.py", line 57, in wrapped_view [Fri Jul 10 11:32:20 2015] [error] return view_func(*args, **kwargs) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/filer/admin/clipboardadmin.py", line 81, in ajax_upload [Fri Jul 10 11:32:20 2015] [error] file_obj.save() [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/filer/models/imagemodels.py", line 56, in save [Fri Jul 10 11:32:20 2015] [error] super(Image, self).save(*args, **kwargs) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/filer/models/abstract.py", line 65, in save [Fri Jul 10 11:32:20 2015] [error] super(BaseImage, self).save(*args, **kwargs) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/filer/models/filemodels.py", line 165, in save [Fri Jul 10 11:32:20 2015] [error] super(File, self).save(*args, **kwargs) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/polymorphic/polymorphic_model.py", line 89, in save [Fri Jul 10 11:32:20 2015] [error] return super(PolymorphicModel, self).save(*args, **kwargs) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 545, in save [Fri Jul 10 11:32:20 2015] [error] force_update=force_update, update_fields=update_fields) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 572, in save_base [Fri Jul 10 11:32:20 2015] [error] self._save_parents(cls, using, update_fields) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 597, in _save_parents [Fri Jul 10 11:32:20 2015] [error] self._save_table(cls=parent, using=using, update_fields=update_fields) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 654, in _save_table [Fri Jul 10 11:32:20 2015] [error] result = self._do_insert(cls._base_manager, using, fields, update_pk, raw) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 687, in _do_insert [Fri Jul 10 11:32:20 2015] [error] using=using, raw=raw) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/db/models/manager.py", line 232, in _insert [Fri Jul 10 11:32:20 2015] [error] return insert_query(self.model, objs, fields, **kwargs) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/db/models/query.py", line 1514, in insert_query [Fri Jul 10 11:32:20 2015] [error] return query.get_comstackr(using=using).execute_sql(return_id) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/db/models/sql/comstackr.py", line 902, in execute_sql [Fri Jul 10 11:32:20 2015] [error] for sql, params in self.as_sql(): [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/db/models/sql/comstackr.py", line 860, in as_sql [Fri Jul 10 11:32:20 2015] [error] for obj in self.query.objs [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/db/models/fields/files.py", line 252, in pre_save [Fri Jul 10 11:32:20 2015] [error] file.save(file.name, file, save=False) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/filer/fields/multistorage_file.py", line 95, in save [Fri Jul 10 11:32:20 2015] [error] super(MultiStorageFieldFile, self).save(name, content, save) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/easy_thumbnails/files.py", line 667, in save [Fri Jul 10 11:32:20 2015] [error] super(ThumbnailerFieldFile, self).save(name, content, *args, **kwargs) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/db/models/fields/files.py", line 86, in save [Fri Jul 10 11:32:20 2015] [error] self.name = self.storage.save(name, content) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/core/files/storage.py", line 49, in save [Fri Jul 10 11:32:20 2015] [error] name = self._save(name, content) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib/python2.6/site-packages/django/core/files/storage.py", line 172, in _save [Fri Jul 10 11:32:20 2015] [error] os.makedirs(directory) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib64/python2.6/os.py", line 150, in makedirs [Fri Jul 10 11:32:20 2015] [error] makedirs(head, mode) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib64/python2.6/os.py", line 150, in makedirs [Fri Jul 10 11:32:20 2015] [error] makedirs(head, mode) [Fri Jul 10 11:32:20 2015] [error] File "/usr/lib64/python2.6/os.py", line 157, in makedirs [Fri Jul 10 11:32:20 2015] [error] mkdir(name, mode) [Fri Jul 10 11:32:20 2015] [error] OSError: [Errno 13] Permission denied: '/home/uronline/media/filer_public/3b' 

J’ai examiné pas mal d’autres questions qui mentionnent ce problème et voici ce que j’ai vérifié:

httpd.conf

  Alias /media/ /home/uronline/media/  Order deny,allow Allow from all   

settings.py

 MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media') MEDIA_URL = '/media/' 

J’utilise Apache et l’utilisateur est apache

Tous les dossiers du chemin d’access au dossier ‘media’ sont définis sur 755 avec l’utilisateur: apache, group: www

Juste par curiosité, j’ai momentanément changé les permissions du dossier en 777 et j’ai toujours eu l’erreur.

J’utilise les parameters par défaut pour django-filer et je me demande maintenant si cette erreur d’autorisation est causée par cela?

Toute aide serait grandement appréciée. Je vous remercie.

Ok, j’ai compris! Comme toujours, mon problème était avec SELinux

Il s’avère que selinux a un booléen qui “autorise le démon httpd à écrire des fichiers dans les répertoires étiquetés public_content_rw_t” – à partir de http://wiki.centos.org/TipsAndTricks/SelinuxBooleans

Donc cela a fonctionné:

 setsebool -P allow_httpd_anon_write on 

J’espère que cela aide quelqu’un!