V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
nonozone
V2EX  ›  问与答

请教个 linux 服务器多网站权限的问题

  •  
  •   nonozone · 2014-11-24 09:45:20 +08:00 · 3255 次点击
    这是一个创建于 3651 天前的主题,其中的信息可能已经有所发展或是发生改变。
    加入一台服务器上有多个网站,而且这些网站都不是放在各自的用户目录而是放在同一个目录里面。那么目录权限如何设置比较好?

    直接把这些目录归属给www,然后权限700比较好,还是把文件都归属给root或者,但是权限基本644,再针对个别目录777?

    前面一种方法实际操作更方便些,但是万一某个网站感染,比如webshell,有跨站的风险。
    第二种方法貌似比较安全,但是实际操作很麻烦,比如类似WP这种想在线升级一下子,蛋疼的很。

    有么有更好的办法?
    10 条回复    2014-11-24 18:36:43 +08:00
    wangxingcs
        1
    wangxingcs  
       2014-11-24 10:00:04 +08:00
    给www,安全些,一般也都这么作,也见过每个网站给个不同权限的,好处是网站出问题后可以通过资源占用直接判断是哪个网站。
    nonozone
        2
    nonozone  
    OP
       2014-11-24 10:03:19 +08:00
    @wangxingcs 但是这样怎么防止跨站呢?
    kungfuchicken
        3
    kungfuchicken  
       2014-11-24 11:57:25 +08:00
    1. apache的话可以考虑 suphp, 每个用户都是用自己的帐号来运行php进程, 互相隔离
    2. nginx + php-fpm的话每个用户都用自己的独立的php-fpm进程,进程使用用户帐号和组启动,配置openbase_dir + chroot
    lincanbin
        4
    lincanbin  
       2014-11-24 12:29:37 +08:00
    给所有vhost都设置open_basedir,设置后每个vhost下的PHP脚本只能访问指定目录的文件。
    extreme
        5
    extreme  
       2014-11-24 13:08:14 +08:00
    不清楚楼主所说的处于同一目录是什么意思。
    那同处在/算不算是在同一个目录?
    要别人帮助你解决问题,那就必须说得清楚一点。
    是多个网站程序同时放在某个目录,抑或是多个网站分别放在同一个目录中不同的子目录?
    还有如何访问?只给网站根目录绑定了域名,访问不同网站时加上子目录名称?抑或不同网站使用不同的域名?
    nonozone
        6
    nonozone  
    OP
       2014-11-24 13:13:34 +08:00
    @extreme 比如同在/var/www下
    /var/www/site1.com
    /var/www/site2.com
    这种
    extreme
        7
    extreme  
       2014-11-24 13:37:29 +08:00
    @nonozone 应该每个网站都以不同的域名访问吧?让每个网站的PHP都以各自的身份运行就行了。
    Apache的用mod_php的可以用mod_itk或mod_ruid2。
    FastCGI我没用,不了解。
    Nginx With PHP FPM的话,给每个网站都建立一个pool,并且以不同的用户身份启动。
    把各网站的文件的所有者更改为PHP执行用户就行了,mod_php的可以给700权限,如果用Apache with FastCGI或PHP FPM,则需要把Apache或Nginx的执行用户加入各PHP执行用户的用户组中,网站文件权限设置为750。

    有些地方我不知道如何表达才能让你更好理解,不知道你能不能看明白……
    你可以考虑使用我的Linux KIT: http://linuxk.it/,只要你不乱改文件权限,跨站几乎是不可能事件,推荐在Debian 7使用Linux KIT。
    extreme
        8
    extreme  
       2014-11-24 13:40:57 +08:00
    @extreme 跨站几乎是不可能的前提是你使用Linux KIT的Shell Script添加站点时给每个站点设置了不同的用户。
    nonozone
        9
    nonozone  
    OP
       2014-11-24 14:48:49 +08:00
    @extreme 之前就是没有给每个网站单独的pool,结果一个网站感染,整个全部感染...
    现在就是debian+nginx+php-fpm。
    你的网址貌似打不开。
    extreme
        10
    extreme  
       2014-11-24 18:36:43 +08:00
    @nonozone 貌似IP是183开头的节点宕机了。
    刚刚删掉183的DNS记录了,有几个DNS记录的TTL是3600,可能没生效,你用nslookup看另外一个122开头的IP,然后更改hosts再访问吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1412 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:24 · PVG 01:24 · LAX 09:24 · JFK 12:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.