Errno :: EACCES解决方案

时间:2014-06-16 20:35:42

标签: ruby-on-rails

每当我的rails项目必须改变文件系统时,我都被上述错误所困扰。无论是通过载波图像上传还是通过

创建文件夹
Dir.mkdir

最近我收到此错误,因为我使用的宝石想要在/home/git/repositories创建一个目录而且它不能,因为它会遇到此权限错误。

我知道这是一个愚蠢的想法,但我绝望地将/home递归地设置为7777,并且出于所有意义和理由,我仍然得到

Errno::EACCES at /users
Permission denied 

我被这个错误所困扰。即使我将其目录递归地设置为7777

,我对carrierwave也有同样的看法

回形针也一样。

我通过删除目录修复了carrierwave,当看到目录不在时,让carrierwave自己创建目录结构。这是我能够做到这一点的唯一方法,经过多次拔毛并将我的机器上的每个目录设置为7777! (在VM中做过,因为我知道它有多愚蠢:P)

这与应用服务器有关吗?什么用户正在运行应用程序服务器?我认为这可能是关键,因为它修复了应用程序服务器创建目录时的错误,而不是我自己手动完成。但我只是正常运行服务器,在我自己的帐户下...创建目录并设置权限的同一帐户...我不断遇到这个错误我做错了什么?

我可以按照sudo rails s

的方式运行

此外,我无法让系统创建目录,因为我找到了一个未找到错误的目录'。我知道我选择了正确的行,因为在手动使用mkdir创建/home/git/repositories时,我开始收到Permission denied错误。

1 个答案:

答案 0 :(得分:0)

您可能不想要stickbit / setuser / setgroup位。也许你想要0664,它允许读/写给拥有的用户/组,并读给其他用户。

如果它试图在/users中写入,则问题可能是/users不存在,而您的根/只允许root创建目录。您应该验证它尝试写入的路径;只是抛弃宽松的模式是a)可能不会解决问题,b)让你对安全问题持开放态度,c)是一个非常糟糕的习惯。

以root身份运行rails应用程序会起作用,但这是一个非常糟糕的主意。不要这样做。