在 Ubuntu 中从“chmod -R 777 /”恢复

vid*_*har 7 linux ubuntu permissions

可能重复:
错误地设置了 chmod / 777。有问题吗?

我正在使用 Ubuntu 进行开发。

当我在数据库方面工作时,有很多事情需要文件权限才能根据要求访问数据目录或其他一些内容。

每次我收到如下错误:

[ERROR] path/to/directory/ permission denied
Run Code Online (Sandbox Code Playgroud)

为了避免它,我必须从终端以 root 用户身份登录并使用以下命令访问该目录:

chmod -R 644 /path/to/directory
Run Code Online (Sandbox Code Playgroud)

为了完全避免这个问题,我使用以下命令授予了完全访问权限:

chmod -R 777 /
Run Code Online (Sandbox Code Playgroud)

现在我的系统有一些问题。

无论是从操作系统帐户还是从终端,我都无法以 root 身份登录。如果我重新启动系统,我不确定它是否会顺利启动。

我认为一些不应该被授予完全访问权限的文件被授予了完全访问权限,我不知道这些文件是什么。

谁能帮我吗?

Ree*_*phy 8

chmod -R 777 /
Run Code Online (Sandbox Code Playgroud)

如果您发现自己正在考虑将模式递归应用777到任何目录,请停下来花点时间确定这是您想要做的。777是简写:

  • 允许文件所有者读、写和执行
  • 允许文件组成员读取、写入和执行
  • 允许系统上的每个人读、写和执行

(为简单起见,我将忽略setuid,setgid和粘滞位的问题)

这几乎总是不是你想要的。

递归地将其应用到/文件系统的根 ( ) 将在您机器上的每个文件和目录上设置这些权限。这绝对不是你想要的

就从这件事中恢复而言……纯粹是假设,如果

  • 您的 Ubuntu 机器仍在运行sshd,您可以ssh以 root 身份登录

你还有另一台机器

  • 可以连接到你的开发机器上 ssh
  • 具有与您的开发机器非常非常相似的文件系统(例如,干净安装相同版本的 Ubuntu,以及您选择的 DBMS)

以下命令会将该机器的文件权限复制到您的开发盒中:

sudo find / -print0 | \
xargs -0 stat -c "chmod %a '%n'; chown -h %U:%G '%n';" | \
ssh user@your-development-machine
Run Code Online (Sandbox Code Playgroud)

这将需要一些时间来运行。

这很有可能修复777Ubuntu 机器上的大量“d”权限。但是,即使在最好的情况下,您也应该会遇到更多需要手动修复的与权限相关的错误。

另一种选择,也是我推荐的选择,是完全重新开始。备份您的数据,重新安装 Ubuntu、您的 DBMS 和您的开发盒上所需的任何其他软件。


qbi*_*qbi 2

给予全世界对文件系统的读、写和执行访问权限通常是一个非常糟糕的主意。一方面,有权访问您计算机的每个人基本上都可以对系统执行任何操作。此外,还有几个系统守护进程,例如ssh检查目录和文件的权限。如果它们不正确,这些守护进程通常无法启动。

针对您当前情况的最佳解决方案是从备份中恢复。因此,您可以轻松取回具有正确权限的所有文件。

如果您没有备份,下一个实用的解决方案是重新安装系统。因此,首先您备份文件,保存已安装的软件 ( dpkg --get-selection > installed-software.txt),然后安装新系统并安装您使用的软件 ( apt-get update && dpkg --set-selection < installed-software.txt && apt-get -u dselect-upgrade)。现在您拥有了一个全新的系统,您可以更新您的配置文件。

另一种解决方案是编写脚本。该脚本应该递归地遍历您的文件系统,并将每个文件和目录的权限与其他系统进行比较。它可以根据其他系统更改权限。您可能需要更改一些值,但此脚本可以为您完成主要工作。如果您可以物理访问计算机,则此解决方案也适用。只需从 Live-CD 或 USB 记忆棒启动并挂载文件系统即可。或者您也可以卸下硬盘并将其安装在另一台计算机上。

然而,从我的角度来看,恢复正常运行的系统的最快方法是备份并重新安装。