【发布时间】:2013-02-15 06:51:31
【问题描述】:
目前我将0777 设置为所有目录和文件。
但是,我害怕被别人访问。
日志文件和所有控制器、模型、视图和config中的文件都设置为0777
一般来说,它们应该如何设置?
- 日志文件目录及其文件
- 控制器文件
- 模型文件
- 查看文件
- config目录下的文件
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3
目前我将0777 设置为所有目录和文件。
但是,我害怕被别人访问。
日志文件和所有控制器、模型、视图和config中的文件都设置为0777
一般来说,它们应该如何设置?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3
您绝对不应该使用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)身份运行。这可以通过使用passenger、unicorn 或作为本地用户运行诸如 mongrel 或 webrick 之类的 Web 服务器来最容易地完成,该本地用户侦听诸如localhost:3000 之类的端口,并使用 Apache 或 Nginx 反向代理到localhost:3000 .
【讨论】:
controllers/examples_controller.rb、models/example.rb、views/controllers/index.html.erb、config/database.yml、config/environments/production.rb、config/routes.rb,以及tmp目录下的文件
0755 应用于目录,将0644 应用于文件。
0755' instead of 0644'吗?因为大部分文件已经是0755了,改成0644要花太多时间
0755 用于文件。您可以使用find . -type d | xargs chmod 0755 和find . -type f | xargs chmod 0644