在 LDAP 中更改现有 Linux 用户的 uid,但 hdfs 似乎无法识别它

在 LDAP 中更改现有 Linux 用户的 uid,但 hdfs 似乎无法识别它

我在 centos 6 上设置了一个 Hadoop 1.2.1 环境。我还使用 nfs-proxy 将 ndfs 挂载到本地文件系统,以便我可以在本地访问 hdfs 内的文件。它一直运行良好,直到今天,我被要求将用户身份验证与 LDAP 集成。出于某种原因,我必须更改某些现有 unix 用户的 uid 并将这些新 uid 存储在 LDAP 中。

更改后,hdfs 似乎无法获取用户的新 uid,即,当我将新文件放入 hdfs 时,它仍然使用旧 uid 将文件存储在 hdfs 中。我知道这一点,因为当我从 hdfs 的本地挂载点检查新文件的 uid 时,它显示的是旧 uid。而且我无法在本地文件系统上访问该文件,因为它属于不同的用户。

我已经尝试重启 Hadoop,但没有效果。有什么建议吗?

答案1

您必须确保使用的是 LDAP 用户。id写入文件时,请检查您是否确实是 LDAP 用户,而不是本地用户。

顺便说一下,你正在尝试从不同的服务器写入。如果是这样,这台机器是否也使用 LDAP 或者你正在使用本地帐户?因为这个用户在写入文件时将使用自己的 uid。

您可以检查以下事项:

  • /etc/nsswitch.conf机器使用文件或 ldap 检索帐户信息的顺序
  • getent passwd检查它是否知道 ldap 用户
  • 我的个人经验是避免让 ldap 用户和本地用户同名。这会导致 UID/主目录/等出现各种尴尬问题。因此,如果 ldap 中有具有相同用户名的本地用户,您可以考虑将其从本地计算机中删除。当我将服务器迁移到 LDAP 身份验证时,我总是删除本地用户。

答案2

卸载本地机器上安装的那个并重新启动 HDFS 服务。
开始将 ndfs 安装到本地文件系统,以便您可以在本地访问 hdfs 中的文件。

相关内容