我对 Linux 不是很有经验,我犯了一个很大的错误。我运行了以下命令:
chown -R [ftpusername]:[ftpusername] /
Run Code Online (Sandbox Code Playgroud)
我的意思是运行这个:
chown -R [ftpusername]:[ftpusername] ./
Run Code Online (Sandbox Code Playgroud)
看到问题了吗?
我试图通过将所有文件的所有者更改为来纠正我的错误root:
chown -R root:root /
Run Code Online (Sandbox Code Playgroud)
现在我在尝试访问我的网站时遇到权限错误,但我最担心的是我想确保我没有在这里造成任何安全漏洞。
问题:
root为正确的事情?chown导致某些文件夹和文件权限发生变化。这是正常的吗?这会导致任何安全漏洞吗?改变一切的所有权以扎根是正确的事情吗?
没有。然而,这是我能想到的让系统进入正常状态的最快方法。
setuid/ setgid,因此需要它们的所有者/组是特定的。实例包括/usr/bin/at,/usr/bin/crontab等我认为运行 chown 会导致某些文件夹和文件权限发生变化。这是正常的吗?
我怀疑模式被改变了。如果是这样,那绝对是不正常的。
这会导致任何安全漏洞吗?
由于您刚刚设置总的来说,我建议简单地重新安装系统 - 或者希望你有全盘备份。/usr/bin/crontab为由 拥有root,因此您现在拥有一个可打开编辑器的 setuid 应用程序。我怀疑任何与此相比的漏洞。当然,这是一个明显的漏洞,所以现在可能会出现更阴险的东西。
显然,chown(3)如果正在运行的进程没有适当的权限,应该清除 setuid 和 setgid 位。而man 2 chown对于Linux的说:
当非特权用户更改可执行文件的所有者或组时,清除
S_ISUID和S_ISGID模式位。POSIX 没有指定在 root 执行chown();时是否也应该发生这种情况。Linux 行为取决于内核版本。如果是非组可执行文件(即S_IXGRP未设置该S_ISGID位的文件),该位表示强制锁定,并且不会被chown().
因此,开发人员和标准委员会似乎已经提供了安全保障。