我在 EC2 Linux 主机(由 NGINX 托管)上设置了一个网站。该目录/var/www/html
的所有者:组为www-data:www-data
,所以我想我应该将自己添加到该www-data
组中,这样我就可以在不使用 的情况下编辑文件sudo
。
将我添加到 /etc/group 中的 www-data 组后,我无法再登录主机。要将自己添加到www-data
组中,我只需使用 vi 即可,如下所示:
sudo vi /etc/group
www-data:x:33:myusername
此时我找到了该组www-data
并将我的用户名添加到该行的末尾。
我(幸运的是)在主机上仍然打开了一个 ssh 窗口,因此我将自己从www-data
组中删除,并且能够通过 ssh 返回到主机。我尝试添加自己以验证是否发生了此行为,然后再次删除自己(以便我可以再次登录)。
为什么将我的用户添加到www-data
组中会阻止我登录(通过 ssh)Linux 主机?
寻找答案
www-data 是 Ubuntu 上的 Web 服务器(例如 Apache、nginx)正常运行时默认使用的用户。 Web 服务器进程可以访问 www-data 可以访问的任何文件。它没有其他重要性
所以要么是错误的/旧的,要么是有其他原因发生这种情况。
答案1
如果主机启用了诸如 SELinux 或 AppArmor 之类的附加安全系统,或者诸如自定义 PAM 规则之类的东西,甚至只是一个非常防御性的配置/etc/ssh/sshd_config
,那么这些安全规则可能会检测到您的新会话是该组的成员www-data
。通常,只有 Web 服务器的子进程才应成为该组的成员。
如果 Web 服务器子进程尝试运行 shell,则可能是黑客攻击:由于此类进程需要接受来自互联网的未经身份验证的、潜在恶意的请求,因此其代码中先前未知的漏洞可能允许入侵者利用它们来进行攻击。导致它们运行恶意代码,从而将进程置于入侵者的控制之下。
入侵过程中明显的下一步是被劫持的进程为入侵者启动 shell 会话,因此“强化”的 Web 服务器可能具有阻止www-data
组成员进行 shell 会话的安全规则,这在一定程度上是有道理的。 。
在不了解更多细节的情况下,很难确定,但您可能会被这样的安全功能阻止。