不小心搞砸了权限——我该怎么办?

不小心搞砸了权限——我该怎么办?

我对 Linux 的经验不是很丰富,而且我犯了一个很大很大的错误。我运行了以下命令:

chown -R [ftpusername]:[ftpusername] /

我本来想运行这个:

chown -R [ftpusername]:[ftpusername] ./

看到问题了吗?

我试图通过将所有文件的所有者更改为来纠正我的错误root

chown -R root:root /

现在,我在尝试访问我的网站时遇到权限错误,但我最担心的是我想确保我没有在这里造成任何安全漏洞。

问题:

  1. 改变一切的所有权是root正确的做法吗?
  2. 我认为运行chown导致某些文件夹和文件权限被更改。这正常吗?这会导致任何安全漏洞吗?

答案1

将所有东西的所有权更改为 root 是正确的做法吗?

。然而,这是我能想到的让系统恢复正常状态的最快方法。

  • 有很多进程需要某些目录/文件由其用户拥有。示例包括日志、缓存、某些进程(如 MySQL、LightDM 等)的工作/主目录。尤其是日志文件可能会产生很多问题。
  • 有些应用程序是setuid/ setgid,因此需要它们的所有者/组是特定的。示例包括/usr/bin/at/usr/bin/crontab等。

我认为运行 chown 导致某些文件夹和文件权限被更改。这正常吗?

我怀疑模式已经改变了。如果是的话,那绝对是不正常的。

这会导致任何安全漏洞吗?

由于您刚刚设置/usr/bin/crontab为 拥有root,因此您现在拥有一个打开编辑器的 setuid 应用程序。我怀疑与此相比是否存在任何漏洞。当然,这是一个公然的漏洞,因此现在可能会出现更阴险的情况。总的来说,我建议简单地重新安装系统 - 或者希望您有全盘备份。

显然,chown(3)如果正在运行的进程没有适当的权限,则应该清除 setuid 和 setgid 位。和man 2 chown对于 Linux 来说:

当非特权用户更改可执行文件的所有者或组时,模式位S_ISUIDS_ISGID模式位将被清除。 POSIX 没有指定当 root 执行chown();时是否也应该发生这种情况Linux 的行为取决于内核版本。如果是非组可执行文件(即S_IXGRP 未设置该位的文件),则该S_ISGID位指示强制锁定,并且不会被chown().

因此,开发人员和标准委员会似乎已经提供了保障措施。

答案2

您有姐妹系统或备份吗?即,您是否有一个可以复制所有权的系统?

如果是这样:复制所有权并找到不在姊妹系统中的文件,然后手动设置这些文件的所有权。

相关内容