一 简介
CDH大数据集群安装和使用过程中,涉及到很多用户。根据用户性质分为服务用户和使用用户。服务用户是在搭建CDH集群中自动创建的,使用用户是在集群使用中管理员创建的。这些用户都是基于linux的用户。因此先补充一下linux 用户知识。
二 Linux 用户操作
1. 查看用户信息
whoami 查看当前登录用户名
groups 查看当前登录用户的组内成员
groups test 查看test用户所在的组,以及组内成员
cat /etc/passwd (文件格式是:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell)
cat /etc/group (文件格式是: 组名:口令:组标识号:组内用户列表)
2. 用户操作(添加,删除,修改)
2.1 添加 useradd
格式:useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
主要参数
-c:加上备注文字,备注文字保存在passwd的备注栏中。
-d:指定用户登入时的主目录,替换系统默认值/home/
-D:变更预设值。
-e:指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1.
-g:指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。默认值为/bin/bash。
-u:指定用户ID号。该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499。
特例:无法使用shell,且其用户目录至/var/servlet/service
useradd tomcat -d /var/servlet/service -s /sbin/nologin
2.2 删除用户
userdel username
userdel -f username 连同用户目录一并删除
2.3 用户权限和用户组修改
文件用户和用户组修改:chown
权限修改:chmod
-a|--append ##把用户追加到某些组中,仅与-G选项一起使用
-c|--comment ##修改/etc/passwd文件第五段comment
-d|--home ##修改用户的家目录通常和-m选项一起使用
-e|--expiredate ##指定用户帐号禁用的日期,格式YY-MM-DD
-f|--inactive ##用户密码过期多少天后采用就禁用该帐号,0表示密码已过期就禁用帐号,-1表示禁用此功能,默认值是-1
-g|--gid ##修改用户的gid,改组一定存在
-G|--groups ##把用户追加到某些组中,仅与-a选项一起使用
-l|--login ##修改用户的登录名称
-L|--lock ##锁定用户的密码
-m|--move-home ##修改用户的家目录通常和-d选项一起使用
-s|--shell ##修改用户的shell
-u|--uid ##修改用户的uid,该uid必须唯一
-U|--unlock ##解锁用户的密码
三, CDH 中用户信息
1. 按照功能汇总
用户名
密码
说明
cloudera-scm
无
cloudera-scm-server服务的用户
admin
自定义
cloudera manager管理员用户
scm
自定义
cm数据库的用户名和密码
无
自定义
Kerberos 数据库
自定义
Kerberos database管理员
自定义
Cloudera manager管理kerberos的
无
自定义
Ldap数据库
Flume,hdfs,solr zookeeper,llama,httpfs,mapred,sqoop,yarn,kms,hive,sqoop2,oozie,hbase,sentry,impala,spark,hue,ldap
无
大数据集群中各服务用户
hdfs@HADOOP.COM和hive@HADOOP.COM
自定义
大数据集群的超级用户(权限管理使用)
duan(自定义)
无
大数据集群普通用户,用户ID>=1000
duan@HADOOP.COM
自定义
Kerberos创建用户
2. 官网文档:https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_network_and_security_requirements.html
四,创建普通用户
1. 系统介绍
操作系统:CentOs 7
Hadoop版本:CDH5.12.2
JDK版本:1.8.0_101
OpenLDAP 版本:2.4.44
Kerberos 版本:1.15.1-19.el7
sentry 版本
2. 创建用户
说明:每个帐户的用户ID必须大于或等于1000.在/etc/hadoop/conf/taskcontroller.cfg文件中,banned.users属性的默认设置是mapred,hdfs和bin,以防止作业 从这些用户帐户提交。 min.user.id属性的默认设置是1000,以防止使用小于1000的用户ID提交作业,这些用户ID通常是Unix超级用户。
2.1 堡垒机节点创建test1 用户和用户组
useradd test1 -u 1001
usermod -a -G duan test1(duan是普通用户组)
2.2 ldap增加账户及账户组(待验证)
grep -E "dsp:|dmp:" /etc/passwd >/opt/passwd.txt/usr/share/migrationtools/migrate_passwd.pl /opt/passwd.txt /opt/passwd.ldif
ldapadd-x -D "uid=ldapadmin,ou=people,dc=yeahmobi,dc=com" -w secret -f /opt/passwd.ldifgrep -E "dsp:|dmp:" /etc/group >/opt/group.txt/usr/share/migrationtools/migrate_group.pl /opt/group.txt /opt/group.ldif
ldapadd-x -D "uid=ldapadmin,ou=people,dc=yeahmobi,dc=com" -w secret -f /opt/group.ldif
ldappasswd-x -D 'uid=ldapadmin,ou=people,dc=yeahmobi,dc=com' -w secret "uid=dsp,ou=people,dc=yeahmobi,dc=com" -S
ldappasswd-x -D 'uid=ldapadmin,ou=people,dc=yeahmobi,dc=com' -w secret "uid=dmp,ou=people,dc=yeahmobi,dc=com" -S
ldappasswd-x -D 'uid=ldapadmin,ou=people,dc=yeahmobi,dc=com' -w secret "uid=bi,ou=people,dc=yeahmobi,dc=com" -S
2.3 kerberos 生成用户
kadmin.localkadmin.local: addprinc test1 (密码是####)
kadmin.local: xst -k /tmp/keytab/test1.keytab -norandkey test1 说明:-norandkey参数是生成不变的密码。
2.4 hadoop中增加相应用户的目录及权限
hadoop fs -mkdir /user/test1hadoop fs-chmod -R 755 /user/test1
hadoop fs-chown -R test1:test1/user/test1
2.4 sentry 基于角色赋予权限,所以
sentry安装后需要和hive,impala等组件集成,详见其他材料。本文只介绍用户角色权限。
集成后,需要创建hive管理账号。
kadmin.localkadmin.local: addprinc hive (密码是####)
kadmin.local: xst -k /tmp/keytab/hive.keytab -norandkey hive 说明:-norandkey参数是生成不变的密码。
kinit hive
Beeline
>!connect jdbc:hive2://duan139:10000/default;principal=hive/duan139@HADOOP.COM
>create role admin;
>grant all on server server1 to role admin;
>grant role admin to group hive;
创建普通用户(hive用户beeline登陆)
>create role duan ;
>grant all on database default to role duan with grant option;
>grant role duan to group duan;
此处有个逻辑:test1属于duan用户组,上述步骤创建了duan角色,并赋予default数据库全部权限,然后授予到duan 用户组,即duan 用户组中的用户成员就有default数据库全部权限了。