我正在为nginx编写一个systemd服务文件,而以root身份运行的面向Internet的服务是一个坏主意,但是我需要nginx来访问每个用户主目录中的某个目录。
例如
/ home / user1 / static / home / user2 / static
但是,我不希望其他任何人,但Nginx(和根)能够访问用户目录。
还有两难。
/ home / user1和subdirs需要属于user1:user1,以防一个用户受到攻击。
这意味着,除非我错过了一些东西,那么nginx需要以root身份运行。 GOTO 10。
正因为如此,它需要访问一些目录。 在这种情况下,它的configuration目录是/ etc / nginx。 但也包括其他目录。 而我的问题是哪些目录是那些?
Nginx需要读/ home / user#/ static。
每个用户将负责确保nginx能够读取目录。
默认情况下nginx是从READS中读取的
/ etc / nginx和子目录
nginx只写入configuration的位置,如configuration的日志文件(通常位于/ var / log / nginx)。
记得检查你的init脚本中的“-g”参数,它可以包含一些额外的选项(比如使用什么PID文件)
另外,nginx通常以root用户身份启动,并在以后下载到configuration的用户。
作为解决方法,您可以:
在/ home / user1,/ home / user2等目录中设置750个权限,为每个用户设置〜/ static dir。
如果nginx工作人员在nginx:nginx下运行,则可以将所有用户添加到nginx组,nginx现在将能够访问/ home / user1 / static,/ home / user2 / static等
当然,在本地设置750并不是一个好习惯,但是在这种情况下,你没有别的办法,因为如果你将在root下运行nginx,它将能够访问整个系统,不仅仅是你的用户dirs,也许是一些私人的钥匙和其他重要的事情。
还有另一种方法来做到这一点:
创build一个符号链接到这个目录:
/ home / user1 / static – > / srv / user1
/ home / user2 / static – > / srv / user2
所以用户可以方便地访问和修改它们,而用户的家庭权限留下700。
所以这不是解决方法,而是解决scheme。 你不需要以root身份运行nginx。