我应该如何设置Rails应用程序的权限?
目前我将0777
设置为所有目录和文件。
但是,我害怕被别人访问。
日志文件以及配置中的所有控制器,模型,视图和文件都设置为0777
一般来说,他们应该如何设置?
- 记录文件目录及其文件
- 控制器文件
- 模型文件
- 查看fies
- config目录中的文件
您绝对不应该使用0777
作为您的文件权限。 这更容易让您暴露于漏洞。
一般来说,遵循这个原则:
-
对于文件夹,请使用
0755
,这相当于rwxr-xr-x
。 执行权限允许查看文件夹内容。find / your / rails / dir -type d -exec chmod 755 {} +
-
对于已执行的脚本,也使用
0755
。 这允许任何人执行脚本,但不对它们进行更改(写入)。 -
对于所有其他文件,使用等于
rw-r--r--
。 这允许每个人读取文件,所有者写入文件,没有人执行该文件。 除此之外,这可以防止恶意脚本被上载和执行。find / your / rails / dir -type f -exec chmod 644 {} +
-
(可选)包含密码的文件可以考虑更严格的权限,尤其是
config/database.yml
或包含邮件服务(mandrill,sendgrid,邮戳),Amazon S3存储桶或Redis连接等密码的任何文件。 对于这些文件,您可以使用0600
。
在生产环境中,rails应用程序应该作为拥有所有这些文件的同一用户(而不是root用户)运行。 这可以通过使用乘客 , 独角兽或运行web服务器(例如mongrel或webrick)作为本地用户监听端口(例如localhost:3000
)以及将Apache或Nginx反向代理服务器发送到localhost:3000
。
- 在capistrano部署期间键入错误:安装
- heroku mongohq和mongoid Mongo :: ConnectionFailure
- 如何使用User-Agent获取URL并通过Ruby中的某个代理超时?
- 找不到关联,Rails 3
- 在尝试安装rails时获取执行gem …(Gem :: RemoteFetcher :: FetchError)503错误
- 多个延迟的作业流程开始相同的工作
- 如何获取rails中所有国家和城市的列表?
- iOS开发:为什么我在第一次尝试时总是得到“A连接失败”,但下一次成功?
- ActiveModel :: SecurePassword未定义方法`password_digest =’