繁体   English   中英

Rails 错误::EACCES 权限被拒绝

[英]Rails Errno::EACCES Permission Denied

Apache 开发环境中的 Rails 3.1 乘客当我访问索引(即 GET)时,我得到:

Errno::EACCES in Crb_agendas#index

Showing /var/www/crbagenda/app/views/layouts/application.html.erb where line #5 raised:

Permission denied - /var/www/crbagenda/tmp/cache/assets/E2C

Extracted source (around line #5):

2: <html>
3: <head>
4:   <title>CrbAgendas</title>
5:   <%= stylesheet_link_tag "application" %>
6:   <%= javascript_include_tag "application" %>
7:   <%= csrf_meta_tags %>
8: </head>

Rails.root: /var/www/crbagenda

当我转到提到的路径 (/var/www/crbagenda/tmp/cache/assets/E2C) 时,没有 E2C 文件夹,root(apache 运行的方式)拥有资产目录......不知道我做错了什么在这里......或者我还能展示什么来帮助。

更新:是的,这个答案来自无知,然后似乎受到了关注。 无论如何,真正的答案可以在Austen Tomek 的答案中找到

通过在 tmp 目录上执行 chmod 777 来解决这个问题,所以我猜这是我对用户/权限设置的无知。

当我遇到这个错误并且运行chmod 777不是这里的解决方案时,我发现了这篇文章。

您需要对如何启用组权限和适当配置 apaches 设置进行一些研究。 这是一个 Stack Exchange 线程,其中详细介绍了这一点并包含有用的链接。 确保 apache 具有对适当目录的读取、写入和执行访问权限,但不要简单地让任何人修改目录。 找到您的系统 apache 组并运行chownchmod -g+[What permissions apache needs goes here]我建议不要使用-R选项运行它,并积极查看 apache 对特定目录需要哪些权限。 链接到关于 apache 权限和一般权限的 Stack Exchange 线程

我完全删除了 tmp 文件夹,这对我有用。 它只是由 Web 服务器重新生成。

对我来说它很有用:

sudo chown -R username app_path

只需在项目文件夹上运行 chown

chown -R www-data /var/www/

我使用 windows vs code 和 ubuntu 子系统作为终端。

我不得不将我的项目文件夹从 ubuntu 子系统区域移动到 windows 区域..所以每次我用 ubuntu 运行东西我都必须输入cd /mnt/c/projects/my_app

它似乎允许应用程序运行并且数据库/服务器的东西运行正常..

里斯

我在 Ubuntu 20.04 中处理 Rails 6 应用程序时遇到了同样的问题。

每次我运行命令rails assets:clobber以完全删除public/assets中的旧资产时,我都会收到错误消息:

errno::enotempty: 目录不为空@dir_s_rmdir

errno::eacces: 权限被拒绝 @ apply2files

并且日志指向导致它的文件的路径,在我的情况下是public/packs/manifest.json文件。

我尝试删除它或更改权限,但没有任何效果。 我也试过删除项目中的tmp目录,但是没有用。

这是我修复它的方法

我使用ls -lh命令列出了该目录中的所有文件和目录,该命令为我提供了以下输出:

-rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem 1.7K Oct  6 20:29 404.html
-rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem 1.7K Oct  6 20:29 422.html
-rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem 1.6K Oct  6 20:29 500.html
-rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem    0 Oct  6 20:29 apple-touch-icon.png
-rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem    0 Oct  6 20:29 apple-touch-icon-precomposed.png
drwxr-xr-x 3 promisechukwuenyem promisechukwuenyem 4.0K Oct 13 09:20 armstrong_tools
-rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem    0 Oct  6 20:29 favicon.ico
drwxr-xr-x 3 root               root               4.0K Oct  8 13:06 packs
-rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem   99 Oct  6 20:29 robots.txt

我意识到packs目录具有与其他文件和目录的权限分开的root所有权:

drwxr-xr-x 3 root               root               4.0K Oct  8 13:06 packs

我只是运行下面的命令将所有权从 root 更改为 promisechukwuenyem:

sudo chown -R promisechukwuenyem:promisechukwuenyem packs/

现在,当我运行 command rails assets:clobber以完全删除public/assets中的旧资产时,它工作得很好。

就这样。

我希望这有帮助

感谢上面的帖子,我也必须解决我自己的问题。 就个人而言,一个重要的文件夹被标记为“隐藏”(按照错误路径错误:权限被拒绝 - .../_netrc (Errno::EACCES) 一旦我右键单击并将其文件夹选项设置为 NOT HIDDEN,然后一切正常美好的!

在 Windows 上,只需以管理员身份打开您的 cmd 并执行您的gem install "lib"命令

在我的情况下,更改目录的权限或所有权无济于事(这必要的)。 原来Selinux启动了(默认情况下在 Fedora 中启用)并禁用是治疗方法:

$ sudo setenforce 0

要使更改永久化,必须更改/etc/selinux/config文件中的设置:

SELINUX=disabled

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM