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

我已经在centos 6上build立了hadoop 1.2.1环境。我还使用nfs-proxy将ndfs挂载到本地文件系统,以便我可以在本地访问hdfs内的文件。 直到今天,它完美的工作,我被要求将用户authentication与LDAP集成。 由于某种原因,我必须更改一些现有的Unix用户的UID,并将这些新的UID存储在LDAP中。

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

我有testing重启hadoop,但没有效果。 任何build议?

您必须确保您正在使用LDAP用户。 如果您在写入文件时实际上是LDAP用户,而不是本地用户,请使用id检查。

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

你可以检查的东西:

  • /etc/nsswitch.conf指定机器使用文件或ldap检索帐户信息的顺序
  • getent passwd来检查它是否知道ldap用户
  • 我个人的经验是避免有一个ldap用户和本地用户同名。 这会导致UID /主目录/所有types的awkard问题。因此,如果在ldap中拥有相同用户名的本地用户,则可以考虑将其从本地计算机中删除。 当我将服务器迁移到LDAP身份validation时,我总是删除本地用户。