如何为Rails应用程序设置权限?

10

目前我将所有的目录和文件设置为0777
但是,我担心被别人访问。
日志文件、所有控制器、模型、视图以及配置文件中的文件都被设置为0777

通常情况下,它们应该如何设置?

  • 日志文件目录及其文件
  • 控制器文件
  • 模型文件
  • 视图文件
  • 配置目录中的文件
1个回答

14

绝不要使用0777作为您的文件权限。这会更容易让您暴露在漏洞下。

一般来说,请遵循以下原则:

  • 对于文件夹,请使用0755,相当于rwxr-xr-x。执行权限允许查看文件夹内容。

    find /your/rails/dir -type d -exec chmod 755 {} +

  • 对于可执行脚本,也请使用0755。这允许任何人执行脚本,但无法更改(写入)它们。

  • 对于所有其他文件,请使用0644,相当于rw-r--r--。这允许任何人读取文件,允许所有者写入文件,但不允许任何人执行文件。这可以防止上传和执行恶意脚本等问题。

    find /your/rails/dir -type f -exec chmod 644 {} +

  • 可选地,包含密码的文件您可以考虑更严格的权限,特别是config/database.yml或任何包含邮件服务(mandrill、sendgrid、postmark)、Amazon S3存储桶或Redis连接密码的文件。对于这些文件,您可以使用0600

在生产环境中,您的Rails应用程序应该作为拥有所有这些文件的用户(而不是root)运行。最简单的方法是使用passengerunicorn或运行像mongrel或webrick这样的Web服务器作为本地用户侦听端口,例如localhost:3000,并且使Apache或Nginx反向代理到localhost:3000


感谢您详细的解释。这是我从未想过的。再次感谢:) - HUSTEN
请问这些文件的路径是什么?controllers/examples_controller.rbmodels/example.rbviews/controllers/index.html.erbconfig/database.ymlconfig/environments/production.rbconfig/routes.rb,以及 tmp 目录下的文件。 - HUSTEN
1
使用0755代替0644可以吗?因为大多数文件已经是0755,将其更改为0644需要太多时间。 - HUSTEN
谢谢。我已经将0644设置为controllers/****_controllers.rb,但现在出现了错误。所以我把它改回了0755,但仍然无法解决问题。你的命令find . -type d | xargs chmod 0755find . -type f | xargs chmod 0644会解决所有问题吗? - HUSTEN
谢谢:) 你能来回答这个问题吗?我发布了一个新问题并添加了更多信息!https://dev59.com/Em7Xa4cB1Zd3GeqPqYHv - HUSTEN
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接