我应该如何设置Rails应用程序的权限?

时间:2013-02-15 06:51:31

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

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

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

  • 记录文件目录及其文件
  • 控制器文件
  • 模型文件
  • 查看fies
  • 配置目录中的文件

1 个答案:

答案 0 :(得分:13)

您绝对不应该使用0777作为文件权限。这更容易让您暴露于漏洞。

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

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

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

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

  • 对于所有其他文件,请使用等同于0644的{​​{1}}。这允许每个人读取文件,所有者写入文件,没有人执行该文件。除此之外,这可以防止恶意脚本被上传和执行。

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

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

在生产环境中,rails应用程序应该作为拥有所有这些文件的同一用户(而不是root用户)运行。这可以通过使用passengerunicorn或运行web服务器(如mongrel或webrick)作为本地用户监听端口(如0600)以及使用Apache或Nginx来轻松完成反向代理到localhost:3000