我想更新 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-helper
chown
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
是不是任何权限错误的一次性修复解决方案,不应以这种方式使用!如果出现权限错误,很可能是因为您没有权限执行该操作,因此请以理智的方式进行调查和解决。