rails3.2.1 ruby1.9.3 nginx and passenger Ubuntu11.10 系统 linode 虚拟 VPS
一开始我是将整个网站文件夹的权限设置为 777.但是听人说这样不安全,也不推荐. 然后有人提是设置 755 或者 644
我想问一下,最好的配置是将什么文件分别进行设置,和设置权限是多少呢? 如果不进行设置个别文件会无法运行。所以请问各位是怎么设置的呢?
看 nginx 的用户是谁(nginx 里边有 user 定义,假定是 jesktop),那么那个 web 网站的文件夹(mysite)权限就给谁,先要chown jesktop -R mysite
,如果你没有修改过这个目录的 mode,到这里就好了。如果你用 chmod 777 修改过 mysite,然后chmod -R 755 mysite
, find mysite -type f -exec chmod 644 {} \;
确保文件夹是 755,文件是 644 权限。
#1 楼 @bwlinux 我的 app 在/home/jialezhang/ror/depot 中,nginx.conf 的 user 定义为 jialezhang 在终端执行了chown jialezhang -R /home/jialezhang/ror/depot&&sudo chmod -R 755 /home/jialezhang/ror/depot&&find /home/jialezhang/ror/depot -type f -exec chmod 644 {} \;但是重启 nginx 后还是 403(errors.log 报错的是directory index of /home/jialezhang/ror/depot/public/ is forbidden),我的 nginx.conf 里面有写passenger_root&&passenger_ruby&&passenger_enabled on
我们的权限有的是给 root 来更新代码 (然后就是 root 的权限了),给 nginx 用户 read 权限,和指定目录的 write 的权限,这有时会有一些怪异的问题出现,但可以比较严的控制权限,也是一种方案
server {
root /home/jialezhang/ror/depot/public
}
@azhao 你说的很对。从安全的角度上严格讲,nginx 这个进程的 user 对所有的文件应该只有只读权限,仅仅开放对个别文件的读写,如果这个是必须的话。
我一般是 webserver 走 www-data, 后端进程和 web 目录用同一个普通用户跑,web 目录给读取权限,外带一些静态文件目录+x,不然有可能 403