在CentOS上还原文件所有者

我错误地跑了一个愚蠢的命令,其中有一个错字。 我创build了一个用户“teamspeak”,我想改变当前目录的文件所有者和它的子目录,但是我错误地将它运行在“/”中。

当我运行命令,而不是“root”时我是用户“teamspeak” ,我跑了这样的东西:

chown -r teamspeak:teamspeak /*

我看到很多行,我能读的是,它没有改变文件的所有者,进度是在/ lib和/或当我按CTRL + C并停止它。

但重启后服务器不可用(我90%确定是文件拥有者)。

我现在要开始在我的主机提供的救援图像模式。

我想知道是否有办法恢复文件许可的事情

AND / OR

search属于teamspeak:teamspeak的所有文件的命令,并使其成为root:root

至less是这样,我正确启动并从我的服务器获取所有数据库。

“一个命令来search所有属于teamspeak:teamspeak的文件,并使其成为root:root”

尝试

 find / -user 'teamspeak' | xargs chown root:root 

问题是,将文件/文件夹所有者更改回root可能无法解决您的所有问题,因为root不是所有文件/文件夹的所有者。

我想你有两个select:

  1. 如果可能,重新安装操作系统。
  2. 去执行这个繁琐的任务,将其与另一个正在运行的系统进行比较,并根据需要更改所有者。 作为初始步骤,您可以先将所有者更改为root。

奇怪的是,OP显然是通过以用户“teamspeak”而不是root来运行一个命令来closures机器(至less是防止重启)。 这应该不会发生,除非在命令运行之前已经存在权限问题。

Janne的答案是行不通的,因为更改后的文件可能不应该被root拥有,但使用find的想法可能是有效的。

我不知道adrianTNT在恢复过程中的位置,但是我要做的是完整性检查/validation:

1)运行find / -user teamspeak并获取已更改文件的列表2)将此列表与不同的CentOS盒子的文件所有权相比较3)如果不同CentOS盒子不可用(或不能快速提出),至less做一个文件列表的眼球。 查找已更改所有权的系统文件。

一旦你有这个列表,我想你仍然会想看看不同的CentOS盒子。 如上所述,非特权用户的chown不应该像这样搞到盒子。 在您的错误之前有可能有权限问题。

问题解决了,数据中心技术人员开始说:

机器在BIOS中停止了一个错误,等待干预。

我正在等待更多的信息,但这可能是一个引导警告,因为/ boot目录设置为另一个用户比root:root

现在我进入ssh并运行find / -user 'teamspeak'来查看错误的用户设置的文件,它是:

 /mnt /lib /lost+found /root /etc /lib64 /opt /sbin /var /var/tmp/yum-teamspeak-6jBpFg /usr /boot /home /home/teamspeak /home/teamspeak/.viminfo /home/teamspeak/.bashrc /home/teamspeak/.bash_profile /home/teamspeak/.bash_logout /home/teamspeak/.bash_history /srv /selinux /tmp /bin /media 

这些不是很多改变的文件/文件夹,结果似乎也包括子目录。 所以我将它们与另一台具有相同操作系统(CentOS 6)的机器进行比较,它们都被认为是root:root,我将它们改回来了,我重启了一次,并且开始很好。

Pfew 🙂

如果您没有备份,我想到的唯一解决scheme就是重新安装服务器,而不再运行该命令:D

您仍然可以从CD启动,装入磁盘并恢复所需的文件。