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

Nat*_*ate 4 linux permissions

我对 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)

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

问题:

  1. 是否正在将所有事物的所有权更改root为正确的事情?
  2. 我认为运行会chown导致某些文件夹和文件权限发生变化。这是正常的吗?这会导致任何安全漏洞吗?

mur*_*uru 5

改变一切的所有权以扎根是正确的事情吗?

没有。然而,这是我能想到的让系统进入正常状态的最快方法。

  • 有很多进程需要某些目录/文件归其用户所有。示例包括日志、缓存、某些进程(如 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().

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