Hadoop在Linux上的權限控制體系
Hadoop在Linux環境中的權限控制需結合Linux系統原生權限、Hadoop自身權限機制及高級安全組件,實現從系統層到應用層的多層級訪問管控。
Hadoop進程需以專用Linux用戶(如hadoop)運行,避免使用root,降低安全風險。
sudo groupadd hadoop # 創建hadoop組
sudo useradd -r -g hadoop hadoop # 創建系統用戶hadoop并加入hadoop組
/opt/hadoop)、數據目錄(如/data/hadoop)的所有權賦予hadoop用戶及組,權限設為755(所有者可讀寫執行,組及其他用戶僅可讀執行):sudo mkdir -p /opt/hadoop /data/hadoop
sudo chown -R hadoop:hadoop /opt/hadoop /data/hadoop
sudo chmod -R 755 /opt/hadoop /data/hadoop
HDFS作為Hadoop分布式存儲系統,其權限模型類似Linux文件系統,通過**用戶(Owner)、組(Group)、其他(Others)**三級權限(讀r、寫w、執行x)管控訪問。
hdfs dfs -ls /path/to/directory(顯示所有者、組及權限位,如drwxr-xr-x);hdfs dfs -chmod 755 /path/to/file(設置文件權限,755為常見目錄權限);hdfs dfs -chown hadoop:hadoop /path/to/file(將文件所有者設為hadoop用戶及組);hdfs dfs -chmod -R 755 /path/to/directory(遞歸設置目錄及其子項權限)。user1對/data/input目錄的讀寫執行權限:hdfs dfs -setfacl -m user:user1:rwx /data/input # 添加ACL規則
hdfs dfs -getfacl /data/input # 查看ACL詳情
Hadoop進程需訪問Linux本地目錄(如日志目錄/var/log/hadoop、臨時目錄/tmp),需確保這些目錄的權限正確。
hadoop用戶及組,權限設為755:sudo mkdir -p /var/log/hadoop
sudo chown -R hadoop:hadoop /var/log/hadoop
sudo chmod -R 755 /var/log/hadoop
為防止未授權用戶訪問,建議啟用Kerberos認證(Hadoop企業級安全標準)。
core-site.xml中啟用Kerberos認證:<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hadoop.security.authorization</name>
<value>true</value>
</property>
hdfs-site.xml中啟用權限檢查:<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.permissions.check-path-access</name>
<value>true</value>
</property>
kinit命令獲取票據(如kinit user1@EXAMPLE.COM),票據有效期默認為10小時。core-site.xml中配置審計日志參數,記錄用戶操作(如文件訪問、權限修改):<property>
<name>hadoop.security.audit.log.maxage</name>
<value>30</value> <!-- 日志保留天數 -->
</property>
<property>
<name>hadoop.security.audit.log.maxbackupindex</name>
<value>10</value> <!-- 日志備份數量 -->
</property>