Paperclip gives permission to opt out with samba mount

In my development environment, the codebase is mounted on a ubuntu VM server using samba mount, it is mounted as root and I run mongrel as root.

When I try to upload a file using Paperclip, the file keeps fine, but then it has problems generating different styles.

I am getting the following error:

Errno::EACCES (Permission denied - /foo/some/file/path/file-name-style.jpg):
  /usr/lib/ruby/1.8/fileutils.rb:1272:in `chown'
  /usr/lib/ruby/1.8/fileutils.rb:1272:in `copy_metadata'
  /usr/lib/ruby/1.8/fileutils.rb:452:in `copy_entry'
  /usr/lib/ruby/1.8/fileutils.rb:1324:in `traverse'
  /usr/lib/ruby/1.8/fileutils.rb:448:in `copy_entry'
  /usr/lib/ruby/1.8/fileutils.rb:507:in `mv'
  /usr/lib/ruby/1.8/fileutils.rb:1395:in `fu_each_src_dest'
  /usr/lib/ruby/1.8/fileutils.rb:1411:in `fu_each_src_dest0'
  /usr/lib/ruby/1.8/fileutils.rb:1393:in `fu_each_src_dest'
  /usr/lib/ruby/1.8/fileutils.rb:494:in `mv'
  vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip/storage.rb:43:in `flush_writes'
  vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip/storage.rb:39:in `each'
  vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip/storage.rb:39:in `flush_writes'
  vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip/attachment.rb:142:in `save'
  vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip.rb:331:in `send'
  vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip.rb:331:in `save_attached_files'
  vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip.rb:324:in `each_attachment'
  vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip.rb:323:in `each'
  vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip.rb:323:in `each_attachment'
  vendor/gems/thoughtbot-paperclip-2.3.0/lib/paperclip.rb:330:in `save_attached_files'

      

It works great if I remove / foo / from the mounted code folder structure and instead make it a symbolic link somewhere directly inside the Ubuntu VM.

+2


source to share


2 answers


Since the error appears to occur when calling chown, I am assuming that the user who has the file chown'd to / from does not have write permissions on mount. It is possible that the user in the virtual machine is unknown on the other system, so when the chown occurs, it is released.



Check that the file is written as (chown'd to) when removing / foo / from the path, then see if you can write the file to the / foo / some / file / path / user directory.

0


source


In fileutils.rb, in the copy_metadata method, the rescue block should be changed from:

rescue Errno::EPERM

      

in

rescue Errno::EPERM, Errno::EACCES

      



or perhaps even in more detail:

rescue

      

so that it catches any errno code.

0


source







All Articles