【问题标题】:How should I set up permission for Rails app?我应该如何设置 Rails 应用程序的权限?
【发布时间】:2013-02-15 06:51:31
【问题描述】:

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

一般来说,它们应该如何设置?

  • 日志文件目录及其文件
  • 控制器文件
  • 模型文件
  • 查看文件
  • config目录下的文件

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    您绝对不应该使用0777 来获取您的文件权限。这更容易让您暴露于漏洞中。

    一般来说,遵循这个原则:

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

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

    • 对于执行的脚本,也使用0755。这允许任何人执行脚本,但不能对其进行更改(写入)。

    • 对于所有其他文件,请使用 0644,它等同于 rw-r--r--。这使得每个人都可以读取文件,所有者可以写入文件,而没有人可以执行文件。这可以防止恶意脚本被上传和执行。

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

    • (可选)包含密码的文件您可以考虑对其进行更多限制性权限,尤其是 config/database.yml 或任何包含邮件服务(mandrill、sendgrid、邮戳)、Amazon S3 存储桶或 Redis 连接等密码的文件。对于这些文件,您可以使用 0600

    在生产环境中,您的 rails 应用程序应该以拥有所有这些文件的同一用户(而不是 root)身份运行。这可以通过使用passengerunicorn 或作为本地用户运行诸如 mongrel 或 webrick 之类的 Web 服务器来最容易地完成,该本地用户侦听诸如localhost:3000 之类的端口,并使用 Apache 或 Nginx 反向代理到localhost:3000 .

    【讨论】:

    • 感谢您的详细解释。这是我从未想过的。再次感谢:)
    • 能告诉我这些案例吗? controllers/examples_controller.rbmodels/example.rbviews/controllers/index.html.erbconfig/database.ymlconfig/environments/production.rbconfig/routes.rb,以及tmp目录下的文件
    • 0755 应用于目录,将0644 应用于文件。
    • 可以使用0755' instead of 0644'吗?因为大部分文件已经是0755了,改成0644要花太多时间
    • 除非文件是可执行的,否则不应将0755 用于文件。您可以使用find . -type d | xargs chmod 0755find . -type f | xargs chmod 0644
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    相关资源
    最近更新 更多