目前我将所有的目录和文件设置为0777
。
但是,我担心被别人访问。
日志文件、所有控制器、模型、视图以及配置文件中的文件都被设置为0777
通常情况下,它们应该如何设置?
- 日志文件目录及其文件
- 控制器文件
- 模型文件
- 视图文件
- 配置目录中的文件
目前我将所有的目录和文件设置为0777
。
但是,我担心被别人访问。
日志文件、所有控制器、模型、视图以及配置文件中的文件都被设置为0777
通常情况下,它们应该如何设置?
绝不要使用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)运行。最简单的方法是使用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
目录下的文件。 - HUSTEN0755
代替0644
可以吗?因为大多数文件已经是0755
,将其更改为0644
需要太多时间。 - HUSTEN0644
设置为controllers/****_controllers.rb
,但现在出现了错误。所以我把它改回了0755
,但仍然无法解决问题。你的命令find . -type d | xargs chmod 0755
和find . -type f | xargs chmod 0644
会解决所有问题吗? - HUSTEN