这个问题的答案相当复杂。
在共享服务器(运行多个网站)上,使用PHP的setuid进程(通过任何方式)可以提供额外的用户内安全性。如果两个人可以访问一台服务器,并且他们的脚本以他们的身份运行,而不是以单个“apache”用户的身份运行,那么通过web闯入一个站点的人只能获得该用户的权限,而不是“apache”的权限,后者的权限更大(例如,apache可以查看每个人的web文件来运行它们,但“otto”看不到“bob”的文件)。
在这种情况下,WordPress将作为“otto”而不是“apache”运行。由于它以“otto”的身份运行,而WP文件由“otto”所有,因此它可以直接写入文件,不需要FTP凭据。
看,这都是关于所有权的。如果文件的所有者与WP实际运行的用户相同,那么它将使用direct方法。如果不是这样,那么就只能使用FTP方法(或其他方法),因为在升级过程中,重要的是文件所有权不会改变。如果它试图以apache用户的身份直接编写它们,那么“apache”将拥有生成的文件。这可能会对专用服务器造成安全风险。
对于专用服务器,让非apache用户拥有文件,同时让PHP在“apache”下运行是最安全的。在这种情况下,甚至只为拥有这些文件而设置一个特殊的用户可能更可取、更安全。然后,要升级的凭据可以放在wp配置文件中,即使它们以某种方式被盗,也不会构成威胁,因为这些凭据可以锁定在除了wp文件本身之外几乎没有任何访问权限的位置。如果有人闯入,他们要么以“apache”(权限有限)的身份闯入,要么以自定义WP用户的身份执行代码(权限也有限)。
这样做的目的是限制在系统中发现漏洞的用户的能力。当有人发现一个弱点时,他们将进一步受到他们所突破的进程所运行的用户权限的限制。