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

请问 vps 环境配置好后用户和 www 权限所属主和组的问题

  •  
  •   vivianthesis · 2014-05-03 09:55:23 +08:00 · 3161 次点击
    这是一个创建于 3890 天前的主题,其中的信息可能已经有所发展或是发生改变。
    小白,刚接触vps,用了lnmp一键包以后倒是可以运行,不过发现一点点问题:我建了个用户abc,此外一键包有个www用户和组。

    1. 我用abc登录sftp,上传的东西在自己目录下的所属主和组都是abc没有问题,似乎这样上传的直接在浏览器运行也能读,也加是说www对abc的东西至少有读取权限,可以这样理解吗?

    2. 我用浏览器上传的图片在sftp下看到所属主和组都是www,这样abc没有修改权限,也加是我通过sftp删除不了。我想到的解决办法有:

    (1)将abc加入www所在的组也就是www组,然后将存储上传附件的目录改成775,这样abc就能修改了
    (2)修改apache或者nginx的配置,设定它们上传的东西默认用户为abc,这样目录仍旧保持755也可以,但会不会有安全问题,比如通过web上传什么东西以后对整个abc用户下的目录就都有权限了

    我原先的空间商目测是后一种方法,因为所有我用web上传的东西显示uid和gid都是我的用户名。不知这两个解决方法哪个好一些?或者还有没有其他办法呢?

    问题很小白,谢谢大家!
    第 1 条附言  ·  2014-05-04 00:51:06 +08:00
    以wordpress为例:现在已经配置apache、php等子进程的运行身份是www:www。要安装wordpress,就要先通过ftp上传,上传了的所有wordpress的文件所有者和组就都是abc:abc,权限文件夹为755文件为644,然后wordpress存储上传的附件的目录可以选择下面其中一种方式:

    1. 目录所有者和组改为www:www,权限还是755和644

    2. 目录改为777和666权限,所有者和组还是abc:abc

    3. (为了通过ftp能让abc删除、移动上传目录里的文件)目录权限改为775,同时把abc加入www组,这样有了组权限的abc也就能操作里面的文件了,可以这样理解吧?

    以上三中方式选择其一,wordpress应该就能正常运行了。但感觉2和3是不是都有点安全隐患?这样看来,难道是1最好?或者还有其他办法?

    这个子进程的运行身份有没有可能设成abc:abc呢?这样会不会有什么隐患?
    7 条回复    2014-05-04 01:33:18 +08:00
    hanchengluo
        1
    hanchengluo  
       2014-05-03 10:47:37 +08:00
    你这样的www:abc和www:www有什么区别呢?只不过是增加了你手动改配置。
    vivianthesis
        2
    vivianthesis  
    OP
       2014-05-03 13:23:49 +08:00
    @hanchengluo 我想这样能方便我维护吧,比如博客的话上传个附件、(通过ftp)删除个附件什么的,虽然好像这种情况确实不是特别必要,除非我通过ftp移动或者删除文件。。只是还是想知道,我原来空间商是怎么做到我用web上传的东西uid和guid都变成我的用户名的呢?
    iCodex
        3
    iCodex  
       2014-05-03 14:20:11 +08:00   ❤️ 1
    www可以理解为公共属主,所有虚拟主机都用这个属主身份执行
    后端的应用程序则建议调用自己的属主身份去执行,就不会出现在线更新弹出ftp之类的东西了。

    给每个用户建立uid和guid,让他们用自己的身份去执行,空间商一般搭配fastcgi吧。
    vivianthesis
        4
    vivianthesis  
    OP
       2014-05-03 15:19:03 +08:00
    @iCodex 后端的应用程序则建议调用自己的属主身份去执行---请问这个怎么调用呢?现在每个用户都是用uid和gid,但是不知道该怎么让他们用自己的身份去执行。。谢谢!
    Jat001
        5
    Jat001  
       2014-05-03 21:32:24 +08:00   ❤️ 1
    建议楼主先搞清楚什么是所有者和组,以及 775 是什么意思。可以先看看这篇文章 http://linux.vbird.org/linux_basic/0210filepermission.php
    像 apache nginx mysql php-fpm 等都有多个进程,主进程都是以 root 身份运行,子进程(也是接收请求的进程)的运行身份在其配置文件中定义。
    我一般用 root 身份登录,把程序需要修改的文件设置成相应的所有者和组(比如 mysql 的数据库和日志文件、wordpress 等程序的缓存和上传目录),像配置文件和其他纯静态文件等一律 root:root,权限一般 644 就可以。
    vivianthesis
        6
    vivianthesis  
    OP
       2014-05-04 00:48:44 +08:00
    @Jat001 谢谢你的回答,尤其是后面的一段,非常清楚明白~

    鸟哥的这个稍微看了一点,可能是我没表达清楚。。。那假如是这种情况,以wordpress为例:现在已经配置子进程的运行身份是www:www。要安装wordpress,就要先通过ftp上传,上传了的所有wordpress的文件所有者和组就都是abc:abc,权限文件夹为755文件为644,然后wordpress存储上传的附件的目录可以选择下面其中一种方式:

    1. 目录所有者和组改为www:www,权限还是755和644

    2. 目录改为777和666权限,所有者和组还是abc:abc

    3. (为了通过ftp能让abc删除、移动上传目录里的文件)目录权限改为775,同时把abc加入www组,这样有了组权限的abc也就能操作里面的文件了,可以这样理解吧?

    以上三中方式选择其一,wordpress应该就能正常运行了。但感觉2和3是不是都有点安全隐患?这样看来,难道是1最好?或者还有其他办法?

    这个子进程的运行身份有没有可能设成abc:abc呢?这样会不会有什么隐患?

    再次感谢!
    Jat001
        7
    Jat001  
       2014-05-04 01:33:18 +08:00   ❤️ 1
    @vivianthesis 我认为在服务器上直接使用 root 账户没有什么不妥的,以 root 身份登录 sftp,即方便又安全。既然是 vps,为何不直接在服务器上下载并解压呢?至于安全方面,我认为应该从 php 的配置文件着手,比如禁用敏感函数,设置 open_basedir 等。另外还要及时更新程序,不要使用漏洞较多的程序。
    我目前使用的方法是第一条;至于第二条,我认为是非常不可取的,最后一个 7 和 6,是对于其他用户而言,如果所有用户都有权更改,那设置所有者和组也没有任何意义了;root 账户可以更改任何文件,所以第三条是没有必要的。
    普通用户使用的账户应该跟程序使用的账户分开,而且程序使用的账户不应该允许登录。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3534 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 04:46 · PVG 12:46 · LAX 20:46 · JFK 23:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.