运行 sudo chown -R $USER$USER /usr/lib/ 后无法访问互联网

运行 sudo chown -R $USER$USER /usr/lib/ 后无法访问互联网

我想更新 PyCharm,但运行 Pycharm 时却无法更新,因为它说我没有足够的权限。因此我运行以下命令:

$ sudo chown -R $USER$USER /usr/lib/

我能够成功更新 PyCharm,但现在我的互联网连接无法正常工作,实际上,在进入恢复模式后,我无法运行 sudo本教程

我确实需要我的互联网连接再次工作,所以请您帮助我解决这个问题。

我必须提到我正在使用双启动。

答案1

实际上,无需重新安装。这种情况很容易修复。我只需在系统上运行相同的命令,大约 10 分钟即可修复。

您需要在恢复模式下启动,或者使用任何 Linux 版本(最好是 Ubuntu!)的实时 USB/DVD。

如果你更喜欢恢复,请参阅如何启动进入恢复模式?

我使用了一个装有 Xubuntu 16.04 的实时 USB。如果使用实时会话,则在启动后,打开终端并使用诸如lsblk和 之类的命令识别您的根(主)分区sudo fdisk -l。当您知道它是哪一个时(它很可能是一个ext4分区),将其挂载。这里我称之为根分区/dev/sda1- 您需要用真实标签替换它。

sudo mount /dev/sda1 /mnt

现在通过执行以下检查来检查它是否是正确的分区ls /mnt- 您应该看到usr sys proc dev home root和您期望在文件系统树顶部找到的其他内容。好的,让我们修复所有权(在所有这些命令中,请仔细注意:并确保将它们放在正确的位置)。

sudo chown -R root: /mnt/usr/lib

这几乎解决了问题。在我的系统上,在我破坏它之前,我检查了该位置的所有所有权

$ find /usr/lib -not -user root

不返回任何内容 - root 拥有一切,但是

$ find /usr/lib -not -group root -ls

出现了这个:

-rwxr-sr-x   1 root     mail          /usr/lib/emacs/24.5/x86_64-linux-gnu/movemail
-rwxr-sr-x   1 root     tty           /usr/lib/mc/cons.saver
-rwsr-xr--   1 root     messagebus    /usr/lib/dbus-1.0/dbus-daemon-launch-helper
-rwxr-sr-x   1 root     utmp          /usr/lib/x86_64-linux-gnu/utempter/utempter

您的系统不会完全相同,但是chown如果您有这些文件,则应该使用它们,如果没有,则寻找等效文件(例如,如果您的系统是 32 位,则应该使用x86而不是x86_64)。我使用以下方法修复了这些问题:

sudo chown :mail /mnt/usr/lib/emacs/24.5/x86_64-linux-gnu/movemail
sudo chown :tty /mnt/usr/lib/mc/cons.saver
sudo chown :messagebus /mnt/usr/lib/dbus-1.0/dbus-daemon-launch-helper
sudo chown :utmp /mnt/usr/lib/x86_64-linux-gnu/utempter/utempter

(如果使用恢复模式,则不需要/mnt在这些路径的开头)

作为指出@grawity,您还需要修复被清除的setuid位:dbus-daemon-launch-helperchown

sudo chmod u+s /mnt/usr/lib/dbus-1.0/dbus-daemon-launch-helper

答案2

chown对系统目录的任何操作都是非常危险

解决此问题的最简单方法就是完全重新安装操作系统。

如果您很幸运(并且有点冒险),您可能只需在恢复模式下运行以下命令即可恢复:

chown -R root:root /usr/lib

尽管最多文件由 root 拥有/usr/lib,但仍然可能偶尔有文件不是如果它不属于适当的用户,则会导致严重问题。事实上,在您的(普通)Linux 安装中,此目录中的大多数文件都归root/所有root,因此如果不想重新安装,这绝对值得一试。

否则,您必须检查每个文件并手动将权限重新分配给它们的正常值(通常意味着 拥有root,但并非在所有情况下都是如此)。有时,您可以重新安装所有软件包(使用apt --reinstall install <packagename>),但这并不能保证,并且可能仍然会带来比它解决的问题更多的麻烦。实际上,您将检查每个文件并dpkg -L对其运行。

至于如何在当前系统中保存文件(如果您选择重新安装操作系统),您可以在恢复模式下使用闪存驱动器。如果您需要在最后一刻将一些文件上传到 Git,您可能可以使用 Live DVD(从损坏的安装中提取 SSH 密钥和任何重要内容)。


将来,为了防止再次发生此类问题,请确保您对系统和所有重要文件进行了(有效——检查一下!)备份。

此外,值得注意的sudo不是任何权限错误的一次性修复解决方案,不应以这种方式使用!如果出现权限错误,很可能是因为您没有权限执行该操作,因此请以理智的方式进行调查和解决。

相关内容