hadoop从哪里获取linux shell用户名和组Map的用户名和组Map?

jjjwad0x  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(757)

目前我正在做一个项目来增强hadoop集群的安全性。最终我将使用kerberos和sentry进行身份验证和授权。用户名和组Map将来自ad/ldap(?),我想是的。
但现在我只是在学习和尝试。我有个问题,但我还没弄明白
用户名/组Map信息来自何处?
据我所知,hadoop没有用户名和组名,用户名和组名来自本地客户机或kerberos领域的客户机。但对我来说有点模糊,我能在这里得到实现细节吗?
这些信息是来自hdfs客户机所在的机器还是来自名称节点上的linux shell用户名和组?或者它取决于上下文-甚至与数据节点相关?如果数据节点和名称节点在本地框中有不同的用户或用户组Map,该怎么办。

jfewjypa

jfewjypa1#

默认情况下,客户机和namenode以及所有在linux框中检查组成员身份和用户名的hadoop服务都使用id命令(不过,我不确定windows客户端的详细信息,但最近它是通过jni完成的,所以这方面也必须有一个解决方案。)
这也意味着结果将取决于本地框的用户组Map。如果您将kerberos与任何后端一起使用,或者如果您通过sssd或其他任何方式对此有一个集中式后端,那么您可以在nsswitch.conf中设置该框,以便在id命令后面使用它。
旁注:有一个名为hadoop.security.group.mapping的属性定义了用于进行Map的策略。我不建议使用ldapgroupmapping,即使您有一个ldap后端,jnibasedgroupmappingwithfallback看起来更可靠而且工作得很好。

m0rkklqb

m0rkklqb2#

hadoop从一个名为 HADOOP_USER_NAME .
如果你想传递另一个用户名,你可以这样写:

HADOOP_USER_NAME=yourname hadoop dfs -put ...

所以命令必须从 HADOOP_USER_NAME=VALUE ,

相关问题