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>