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

2014-05-03 09:55:23 +08:00
 vivianthesis
小白,刚接触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都是我的用户名。不知这两个解决方法哪个好一些?或者还有没有其他办法呢?

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

给每个用户建立uid和guid,让他们用自己的身份去执行,空间商一般搭配fastcgi吧。
vivianthesis
2014-05-03 15:19:03 +08:00
@iCodex 后端的应用程序则建议调用自己的属主身份去执行---请问这个怎么调用呢?现在每个用户都是用uid和gid,但是不知道该怎么让他们用自己的身份去执行。。谢谢!
Jat001
2014-05-03 21:32:24 +08:00
建议楼主先搞清楚什么是所有者和组,以及 775 是什么意思。可以先看看这篇文章 http://linux.vbird.org/linux_basic/0210filepermission.php
像 apache nginx mysql php-fpm 等都有多个进程,主进程都是以 root 身份运行,子进程(也是接收请求的进程)的运行身份在其配置文件中定义。
我一般用 root 身份登录,把程序需要修改的文件设置成相应的所有者和组(比如 mysql 的数据库和日志文件、wordpress 等程序的缓存和上传目录),像配置文件和其他纯静态文件等一律 root:root,权限一般 644 就可以。
vivianthesis
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
2014-05-04 01:33:18 +08:00
@vivianthesis 我认为在服务器上直接使用 root 账户没有什么不妥的,以 root 身份登录 sftp,即方便又安全。既然是 vps,为何不直接在服务器上下载并解压呢?至于安全方面,我认为应该从 php 的配置文件着手,比如禁用敏感函数,设置 open_basedir 等。另外还要及时更新程序,不要使用漏洞较多的程序。
我目前使用的方法是第一条;至于第二条,我认为是非常不可取的,最后一个 7 和 6,是对于其他用户而言,如果所有用户都有权更改,那设置所有者和组也没有任何意义了;root 账户可以更改任何文件,所以第三条是没有必要的。
普通用户使用的账户应该跟程序使用的账户分开,而且程序使用的账户不应该允许登录。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/110924

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX