犯了一个错误,清除了根目录中的所有目录和文件。我仍然打开根会话并创建了:
# 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,然后一旦重新启动回到发行版,您就不会再收到段错误。