删除 /root 中的所有文件和目录(RHEL 6.8)

删除 /root 中的所有文件和目录(RHEL 6.8)

犯了一个错误,清除了根目录中的所有目录和文件。我仍然打开根会话并创建了:

# ls -la
total 36 
dr-xr-x---.  2 root root  4096 Nov 24 11:09 .
dr-xr-xr-x. 22 root root  4096 Nov 16 14:23 ..
-rw-------   1 root root 12035 Nov 24 11:53 .bash_history
-rw-r--r--   1 root root    18 Nov 24 11:08 .bash_logout
-rw-r--r--   1 root root   184 Nov 24 11:06 .bash_profile
-rw-r--r--   1 root root   481 Nov 24 11:07 .bashrc
-rw-r--r--   1 root root   101 Nov 24 11:09 .cshrc

但是当我尝试在第二个 Putty 会话中以另一个用户身份登录“su -”时,出现了分段错误。这可能是什么原因造成的?

答案1

尝试创建具有主目录的空白用户,并将所有内容从其主目录复制到 /root。检查目录和文件的权限和所有权两次。

答案2

许多系统中没有重要文件/root

如果您使用sudo它来执行管理任务,那么/root/.bash_history首先就永远不会被创建,并且目录列表中的其他文件很可能始终保持静态。

因此,擦除/root是可以对 Linux 系统进行的各种破坏中无害的一种。

删除/root不会阻止使用su和进行登录sudo。它确实会阻止使用 ssh 密钥进行身份验证的直接登录root。但那种情况下的错误消息会有所不同。

因此,任何segmentation fault错误消息都不是因文件丢失而导致的。但它可能是因文件损坏而导致的。但是,由于您列出的文件是文本文件而非二进制文件,因此这些文件损坏不太可能引发分段错误。

由于是.bashrc由您打开的 shell 执行的,并且它确实有权执行任意代码,因此理论上可以将代码放入其中以触发分段错误并再次将您注销。但这不是偶然发生的事情。

另一个可能的解释是,登录过程中使用的一些代码缺少错误处理,并试图使用NULL从库函数获取的指针来指示丢失的文件,从而导致分段错误。如果您发现这种情况,您应该针对程序分段错误提交错误报告,然后重新创建文件以缓解问题。

/root可以通过/root重新安装默认拥有安装的文件的包或/etc/skel从新创建的用户获取其初始文件的位置复制来重新创建文件。

答案3

您的 SELinux 可能处于强制模式。您需要重新启动进入单用户模式,或者甚至可能需要从救援磁盘重新启动,然后恢复文件和 /root 目录的 SELinux 上下文。

在 Google 上可以轻松找到执行上述操作的步骤。

或者,从救援磁盘启动后,您可以编辑文件 /etc/selinux/config(请确保先挂载您的根分区!)以完全禁用 SELinux,然后一旦重新启动回到发行版,您就不会再收到段错误。

相关内容