部署 请问 nginx+rails3.2.1+ubuntu11.10 的最佳权限设置是什么呢?

jesktop · 2012年02月22日 · 最后由 clearJiang 回复于 2012年07月24日 · 5647 次阅读

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 好的。问题已经解决,相当谢谢~^^

#1 楼 @bwlinux 多谢,我也一直没搞明白

嗯。而且只要把整个应用的目录中会改变的部分给 nginx 的 user 授权即可....授权多了也不这么让人放心

#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

#5 楼 @jialezhang 我一直想说了,文本里面滥用重点(加粗) == 无重点。

代码用代码块包裹起来。

your code

我们的权限有的是给 root 来更新代码 (然后就是 root 的权限了),给 nginx 用户 read 权限,和指定目录的 write 的权限,这有时会有一些怪异的问题出现,但可以比较严的控制权限,也是一种方案

#6 楼 @Rei 额 我是想用代码块,但是加了引号没效果额

#8 楼 @jialezhang 这是 ~ 键下面的那个符号

#9 楼 @Rei 啊哦~ 受教啦

#5 楼 @jialezhang

server {
root /home/jialezhang/ror/depot/public
}

@azhao 你说的很对。从安全的角度上严格讲,nginx 这个进程的 user 对所有的文件应该只有只读权限,仅仅开放对个别文件的读写,如果这个是必须的话。

#7 楼 @azhao 具体来说是不是我的 nginx 的安装目录应该是 root 用户,我的/PATH/TO/MYAPP/public/应该是 nginx 用户?

#11 楼 @bwlinux 这个 root 的指向已经加到了 nginx.conf 文件里面了额,报错Index of /home/jialezhang/ror/depot/public is forbidden,我把 nginx 的安装目录,/home/jialezhang/ror/depot/public 的用户全改成了 jialezhang,也就是我的用户名

我一般是 webserver 走 www-data, 后端进程和 web 目录用同一个普通用户跑,web 目录给读取权限,外带一些静态文件目录+x,不然有可能 403

需要 登录 后方可回复, 如果你还没有账号请 注册新账号