一 簡介
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.ldif grep -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.local kadmin.local: addprinc test1 (密碼是####) kadmin.local: xst -k /tmp/keytab/test1.keytab -norandkey test1 說明:-norandkey參數是生成不變的密碼。
2.4 hadoop中增加相應用戶的目錄及權限
hadoop fs -mkdir /user/test1 hadoop fs -chmod -R 755 /user/test1 hadoop fs -chown -R test1:test1/user/test1
2.4 sentry 基於角色賦予權限,所以
sentry安裝后需要和hive,impala等組件集成,詳見其他材料。本文只介紹用戶角色權限。
集成后,需要創建hive管理賬號。
kadmin.local kadmin.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數據庫全部權限了。