我错误地运行了一个愚蠢的命令,其中有一个拼写错误。我创建了一个用户“teamspeak”,我想更改当前目录及其子目录的文件所有者,但我错误地在“/”中运行了它。
我运行该命令时使用的是“teamspeak”用户,而不是“root”用户我运行了如下命令:
chown -r teamspeak:teamspeak /*
我看到了很多行,我能读懂的是,它无法更改文件所有者,当我按下 CTRL+C 并停止它时,进度条围绕着 /lib 和可能的 /boot。
但是重启后服务器仍然不可用(我 90% 确定是文件所有者的问题)。
我现在正准备以主机提供的救援映像模式启动它。
我想知道是否有恢复文件权限的方法。
和/或
搜索属于 teamspeak 的所有文件的命令:teamspeak并让他们成为 root:root
至少我可以正确启动它并从我的服务器获取所有数据库。
答案1
“搜索属于 teamspeak:teamspeak 的所有文件并使其成为 root:root 的命令”
尝试
find / -user 'teamspeak' | xargs chown root:root
答案2
问题是,将文件/文件夹所有者改回root
可能无法解决所有问题,因为root
他不是所有文件/文件夹的所有者。
我认为你有两个选择:
- 如果可能,重新安装操作系统。
- 开始进行繁琐的任务,将其与另一个正在运行的系统进行比较,并根据需要更改所有者。您可以先将所有者更改为 root,作为初始步骤。
答案3
奇怪的是,OP 显然通过以用户“teamspeak”而不是 的身份运行命令关闭了机器(或至少阻止了重启)root
。这种情况不应该发生,除非在运行命令之前机器上已经存在权限问题。
Janne 的回答不起作用,因为更改的文件可能一开始就不应该由 root 拥有,但使用的想法find
可能是有效的。
我不知道 adrianTNT 的康复过程进行到哪一步了,但我会进行以下健全性检查/验证:
1) 运行该程序find / -user teamspeak
并获取已更改文件的列表 2) 将此列表与另一个 CentOS 框的文件所有权进行比较 3) 如果没有其他 CentOS 框(或无法足够快地启动),至少要查看文件列表。查找所有权已更改的系统文件。
我认为,一旦您有了这个列表,您仍然会想要查看不同的 CentOS 机器。正如所说,chown
非特权用户不应该那样搞砸机器。在您犯错之前,可能存在权限问题。
答案4
如果你没有备份,我想到的唯一解决方案就是重新安装服务器并且永远不再运行该命令:D
您仍然可以从 CD 启动、安装磁盘并恢复所需的文件。