意外运行 chown 后恢复文件所有权

意外运行 chown 后恢复文件所有权

我最近升级了 PostgreSQL 安装并打算运行以下命令:

sudo chown -R postgres:postgres /var/lib/postgres

不幸的是,由于制表符补全计算错误,我不小心忘记了最后的“postgres”部分......我最终运行了:

sudo chown -R postgres:postgres /var/lib

不用说,这引起了一系列问题。例如,我无法启动进入我的操作系统。


    更新:

    我申请了chown -R gdm:gdm /var/lib/gdm,现在可以成功登录了!但是,我不知道这会在多大程度上引起问题。


我正在运行 Arch Linux,其中 i3 作为窗口管理器,GDM 作为显示管理器。如果您能帮助我获得 /var/lib 中必要目录的原始所有权,我将不胜感激。到目前为止,它永久挂在流程的这一部分上,之后
         Starting User Manager for UID 120...
[  OK  ] Started Session c1 of user gdm.
[  OK  ] Started User Manager for UID 120.

启动期间控制台的照片

我正在使用 LUKS 并且文件系统已加密。

不过,当然,我可以通过添加init=/bin/bash到内核行来通过 grub 生成 shell,所以一旦我知道正确的所有权要求,这应该很容易修复。

目前在/var/lib

  • colord属于有色人种,
  • gdm归gdm所有,
  • locate并且mlocate归 root 所有,
  • redis属于redis,
  • systemd归 root 所有,并且
  • 其他一切都归 postgres 所有。

ls -ho输出照片 了解权限和修改时间。

一个问题是该/var/lib/gdm目录由 gdm 拥有,包含典型的主目录子目录(DesktopDocumentsDownloadsMusicPicturesPublic和),所有这些子目录均由 postgres 拥有Templates。 Videosls -ho输出照片 了解权限和修改时间。

如何将文件所有权恢复/var/lib到运行之前的状态

chown -R postgres:postgres /var/lib

?任何援助将不胜感激。

答案1

您可以在目录上使用 chown 命令返回,其中包含您从 /etc/passwords 中的用户名及其来自 /etc/groups 的组中获知的信息,其余部分将属于 root:root

但这有点棘手,直到你可以让一个错误......它将在很多很多天出现......由于忘记的更改......

我认为 postgres gdm 还可以,其余的可能属于 root redis 到 redis ...我认为 Tor 也有它的专用用户。


简单的方法:重新安装所有内容(备份数据库之后,当然不格式化 /home )...

答案2

/var 文件系统层次结构用于由应用程序创建的数据,因此包管理器在 /var 中管理的很少。在大多数情况下, pacman -Qo 只会返回 /var/lib 中顶级目录的所有权,因为它的结构是让每个应用程序都有一个目录。

您首先需要将所有内容设置为 root 所有者,以获得比 postgres 更合理的默认值。

chown -R root:root /var/lib/

重新安装拥有文件的软件包/var/lib

pacman -Qo $(find /var/lib) 2>/dev/null

现在看看谁拥有每个目录:

ls -la /var/lib

root 拥有的目录中的所有内容都将归 root 所有。而不属于 root 的目录实际上是应用程序用户的主目录。几乎没有例外,这些目录中包含的所有文件都归应用程序用户所有。所以跑步chown -R gdm:gdm /var/lib/gdm是有效的。但也有例外。例如在我的系统上/var/lib/sddm/state.conf由root拥有。

答案3

手动修复这个问题并不是一件容易的事 - 您可以根据/var/lib中的条目猜测目录的可能所有权,/etc/passwd但它会时好时坏。如果应用程序目录下的某些文件由应用程序拥有,而其他文件由 root 拥有(反之亦然),会发生什么情况?你将花费很长时间来解决这个问题......

我建议重新安装系统上的所有软件包。有多种方法可以做到这一点,例如:

# pacman -S $(pacman -Qeq) --noconfirm

不过,我建议您在执行此操作之前先备份系统。

答案4

从实时结构旁边的备份中恢复,并将所有权设置为与恢复的结构相同。 - 如果您的 BUR 系统允许,您可以恢复空文件/目录。

相关内容