gpt4 book ai didi

ruby-on-rails - apachePassenger需要什么权限

转载 作者:行者123 更新时间:2023-12-04 02:39:10 25 4
gpt4 key购买 nike

在 Linode、RVM、Rails 3、带有乘客模块、carrierwave 和 mini-magick 的 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.

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 个目录是日志文件和上传目录,因此我试图保护其余目录。是否还有其他我需要使其可写的文件夹/文件?

最佳答案

网站的权限有点奇怪:一方面,内容需要网络服务器可读,FastCGIPassenger或执行(在本例中为 Ruby)代码的任何东西。另一方面,如果网络服务器用户拥有这些文件,那么被黑的网络服务器或(更有可能:)您的代码可能会modify the executable files and static files that are your website . It happens too often .

如果网站的内容为其他用户所有,不能被网络服务器软件写入,则该网站不能被攻击者覆盖。 (当然,您有几个打开的数据库连接套接字;所有数据库支持的数据都可能被攻击者破坏。此外,您允许上传的任何目录都可能被攻击者破坏。但目标是 reduce the privileges of the software as far as reasonable。)

所以,所有这一切,关于你的具体问题;您的网络服务器软件运行为 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

我假设您系统上的所有用户都可以阅读日志。这可能不是真的。使用 700代替 755600代替 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

同样,我假设您系统上的所有用户都可以看到所有上传的内容。使用 700代替 755如果您只是希望网络服务器软件能够读取文件。

这些是应该起作用的简单指南;如果你想保持网站软件和内容只在拥有网站的用户和运行网站的用户之间共享,你会变得更复杂,方法是运行带有补充组的网络服务器(参见 newgrp(1)group(5) 联机帮助页)有关详细信息)并为文件提供相同的组所有者,并使用组权限位(中间八进制数: 750700 )。这很复杂,除非你有充分的理由,否则可能不值得走这条路。 (绝对值得在某处的开发机器上做一次,只是为了让您对它足够熟悉,以便将来可以使用它。:)

关于ruby-on-rails - apachePassenger需要什么权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6037286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com