pca*_*asa 10 ruby-on-rails ruby-on-rails-3
在Linode,RVM,Rails 3,带乘客模块的Apache,运载波和迷你魔法上运行Ubuntu 10.04
我明白了:
Rails Error: Unable to access log file. Please ensure that /srv/www/mysite.com/testapp/log/production.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.
Run Code Online (Sandbox Code Playgroud)
和 Errno::EACCES (Permission denied /srv/www/mysite.com/testapp/public/uploads/tmp/20110517-1707-2938-6455):
我跑了 chmod -R root:root /srv/www/mysite.com/testapp
然后:chmod -R www-data:www-data /srv/www/mysite.com/testapp&chmod -R www-data:www-data /srv/www/mysite.com/testapp/public/uploads
由于只有2个应该可写的目录是日志文件和上传目录,我试图确保其余的.我还需要其他任何文件夹/文件可写吗?
sar*_*old 31
网站上的权限有点奇怪:一方面,内容需要由网络服务器和FastCGI/ Passenger或执行(在本例中为Ruby)代码的任何内容读取.另一方面,如果网络服务器用户拥有这些文件,那么被黑客入侵的网络服务器或(更可能是:)您的代码可能会修改您网站的可执行文件和静态文件.它经常发生.
如果网站的内容由其他用户拥有,而不是由网络服务器软件写入,则该网站不能被攻击者覆盖.(当然,你有一些数据库连接的开放套接字;所有数据库支持的数据都可能被攻击者破坏.此外,你允许上传的任何目录都可能被攻击者破坏.但目标是减少特权.软件尽量合理.)
所有这些都说明了你的具体问题; 您的网络服务器软件运行www-data,并且您的日志文件和上传目录由www-data以下所有者拥有是有意义的:
mkdir -p /srv/www/mysite.com/testapp/log/ # might not exist yet
chown -R pcasa:pcasa /srv/www/mysite.com/ # or some other user
chmod 755 /srv/www/mysite.com
chmod 755 /srv/www/mysite.com/testapp/
# populate the app directory with your files, if you haven't done so already
chown -R www-data:www-data /srv/www/mysite.com/testapp/log
chmod 755 /srv/www/mysite.com/testapp/log # see notes
chmod 644 /srv/www/mysite.com/testapp/log/* # see notes
Run Code Online (Sandbox Code Playgroud)
我假设您系统上的所有用户都可以读取日志.这可能不是真的.使用700替代755和600取代的644,如果你不希望所有系统用户读取日志文件.
接下来,为您的uploads目录:
mkdir -p /srv/www/mysite.com/testapp/public/uploads/tmp # might not exist yet
chown -R www-data:www-data /srv/www/mysite.com/testapp/public/uploads
chmod 755 /srv/www/mysite.com/testapp/public/uploads
chmod 755 /srv/www/mysite.com/testapp/public/uploads/tmp
Run Code Online (Sandbox Code Playgroud)
我再次假设您系统上的所有用户都能够看到所有上传的内容.如果您只是希望Web服务器软件能够读取文件,请使用它们700代替755.
这些是应该有效的简单指南; 如果您想保持网站软件和内容仅在拥有网站的用户和运行网站的用户之间共享,通过运行带有补充组的网络服务器(请参阅newgrp(1)和group(5)联机帮助页以获取详细信息)并给予文件相同的组所有者,并使用组权限位(中间八进制数:750vs 700).这很复杂,除非你有充分的理由,否则可能不值得走这条路.(绝对值得在某个开发机器上做一次,这样你就可以熟悉它,以便将来可以使用它.:)
| 归档时间: |
|
| 查看次数: |
13901 次 |
| 最近记录: |