如果不使用 sudo,则无法在根目录上运行 ls 命令

如果不使用 sudo,则无法在根目录上运行 ls 命令

CentOS 7.6.180 GNOME-CLASSIC 3.28.2

我一直能够在上述系统中的 / 目录上运行 ls。

现在我运行 ls 时它就挂起了。如果我尝试使用终端以外的软件查看 / 目录,情况也是如此。

但是,如果我使用 sudo,我可以成功在 /dir 上运行 ls。

在我取消了 / dir 中的大型 rsync 作业(ctrl c)并发出 reboot -f 命令后发生了此变化。

我不知道这些事情是不是原因。

我如何恢复使用 ls 读取 / 目录的能力?

答案1

很难说究竟什么能解决问题,但很可能是你的文件系统已损坏,可能是某些包含文件权限的信息,这就是为什么 root 可以看到所有内容,但另一个用户挂起。我不能 100% 确定,因为我显然无法访问你的文件系统,但ls不应该挂起。如果您没有某些权限,它应该立即失败,而不是挂起。

解决这个问题最有可能的方法是修复文件系统。由于系统启动时会挂载根文件系统,因此您必须从运行在不同磁盘上的操作系统执行此操作。如果您有双启动系统,请使用其他操作系统。否则,有很多莱纳斯救援可以刻录到 CD 或写入 USB 密钥的图像。然后从那里启动并使用 shell 执行文件系统检查。该命令的一般形式为:

fsck [options] /dev/<DEV>

将上面的内容替换<DEV>为安装根文件系统的设备分区,通常类似于nvme0n1p1sda1。如果没有任何选项,fsck 可能不会执行任何操作,因此您可以添加-a自动修复,-f以便在 fsck 报告文件系统标记为干净时强制修复,-y以自动接受所有修复选项,以防出现大量错误。

确切的命令取决于文件系统,因此请先检查手册页以确认这些选项适用于您。许多文件系统都有专门的 fsck 版本,例如:

fsck.jfs

对于 JFS,添加一个从单独设备获取日志的选项。

答案2

问题自然解决了。

今天早上我重新连接到了那台电脑。

问题已经解决。

我的理论是,“取消”的 rsync 仍有一些正在运行的东西,有一些东西阻止了 ls 在 / 上进行操作

非常感谢您的回复。

相关内容