CentOS 6.x / OpenVZ
最近,我的 VPS 提供商将我的 OpenVZ 容器移至新服务器。此举之后,我注意到我的一个用户帐户的文件/目录显示了一个奇怪的所有者/组。
例如我会看到这样的东西:
[root@exampleserver ~] ls -l /home/foouser
-rw-rw-r-- 1 65534 65534 370123 Jan 1 2014 ExampleFile.txt
我希望看到“foouser”作为所有者/组而不是 65534。
同样,当我尝试切换到用户时,我收到错误:
[root@exampleserver ~] su - foouser
su: warning: cannot change directory to /home/foouser: Permission denied
-bash: /home/foouser/.bash_profile: Permission denied
我的猜测是,用户帐户的某些数字标识符在移动后并未保留,因此现在我的用户帐户不与旧文件关联。
什么会导致这种情况以及如何解决它?
答案1
65534 是某种默认/ nobody
UID 和 GID 值。您的 VPS 提供商在复制您的容器时犯了某种错误。例如,他们使用了rsync
但未能使用其--numeric-ids
选项。
容器内的用户 ID 不存在于容器外部,某些复制工具在看到无法解析的 UID 和 GID 时,会将其恢复为默认值。这就是为什么会发生这种错误。不过,有能力的虚拟化提供商不应该犯这样的错误。
您的选择是:
chown
/chgrp
所有文件恢复到应有的样子。然而,有关原始所有者和组的信息已经丢失,因此在某些情况下,如何重建它们可能并不明显(例如“这个或那个文件应该由 Web 服务器用户还是我自己的用户写入?” )。- 向提供商投诉并让他们重做副本,这次做得正确。