1. 用户与组管理(基础权限载体)
在Linux系统中,Hadoop的权限管理依赖Linux原生用户/组体系。需为Hadoop集群创建专用用户(如hadoop)和组(如hadoop),将Hadoop进程(如NameNode、DataNode)和用户纳入该组,实现统一的权限管控。常用命令:
# 创建hadoop用户组
sudo groupadd hadoop
# 创建hadoop用户并加入hadoop组(-r表示系统用户)
sudo useradd -r -g hadoop hadoop
# 设置hadoop用户密码(可选)
sudo passwd hadoop
注:所有需要访问Hadoop集群的用户(如运维人员、数据分析师)均需加入hadoop组,避免权限冲突。
2. 本地文件系统权限(保障进程运行)
Hadoop进程(如NameNode、DataNode、ResourceManager)需访问本地目录(如安装目录、日志目录、数据目录),需正确设置这些目录的所有者和权限:
# 创建Hadoop安装目录并设置所有者
sudo mkdir -p /opt/hadoop
sudo chown -R hadoop:hadoop /opt/hadoop
# 设置目录权限(所有者可读写执行,组和其他用户可读执行)
sudo chmod -R 755 /opt/hadoop
# 日志目录(通常位于$HADOOP_HOME/logs)需允许hadoop用户写入
sudo chown -R hadoop:hadoop /opt/hadoop/logs
注:若目录权限过严(如700),可能导致Hadoop进程无法启动;若过松(如777),则存在安全风险,需根据实际需求调整。
3. HDFS权限管理(核心数据访问控制)
HDFS的权限模型与Linux文件系统类似,分为用户(Owner)、组(Group)、其他人(Others)三类,支持读(r)、写(w)、**执行(x)**三种权限。常用命令:
hdfs dfs -ls /path/to/file(显示所有者、组、权限等信息);hdfs dfs -chmod 755 /path/to/file(如755表示所有者有rwx权限,组和其他用户有rx权限);hdfs dfs -chown user1:group1 /path/to/file(将文件所有者改为user1,组改为group1);hdfs dfs -chmod -R 755 /path/to/directory(递归修改目录及其子文件/目录的权限)。注:HDFS默认开启权限检查(dfs.permissions.enabled=true),若需临时关闭(如调试),可修改hdfs-site.xml中的该属性为false,但生产环境不建议这样做。
4. ACL(访问控制列表,细粒度权限控制)
若需要对特定用户或组设置更灵活的权限(如允许某用户对某目录有写权限,而其他用户无),可使用HDFS的ACL功能。常用命令:
hdfs dfs -setfacl -m user:alice:rwx /path/to/directory(允许用户alice对目录有rwx权限);hdfs dfs -getfacl /path/to/directory(显示目录的ACL规则);hdfs dfs -setfacl -x user:alice /path/to/directory(删除用户alice的ACL规则)。注:ACL需在HDFS目录上启用(默认开启),可通过hdfs dfs -setfacl -b /path/to/directory清空所有ACL规则。
5. Kerberos认证(增强身份安全性)
为防止未授权用户访问Hadoop集群,建议启用Kerberos认证(Hadoop原生支持)。主要步骤:
core-site.xml和hdfs-site.xml中启用Kerberos认证:<!-- core-site.xml -->
<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>
kinit命令获取票据(如kinit alice@EXAMPLE.COM),票据有效期默认为10小时;hdfs dfs -ls /)时,系统会自动校验票据,未认证用户无法访问。6. 审计与监控(追踪权限使用)
启用审计日志可记录用户对HDFS的所有操作(如读、写、删除),便于事后追溯。配置方法:
hdfs-site.xml:添加以下属性:<property>
<name>hadoop.security.audit.log.enabled</name>
<value>true</value>
</property>
<property>
<name>hadoop.security.audit.log.file</name>
<value>/var/log/hadoop/hdfs/audit.log</value>
</property>
<property>
<name>hadoop.security.audit.log.maxage</name>
<value>30</value> <!-- 日志保留天数 -->
</property>
<property>
<name>hadoop.security.audit.log.maxbackupindex</name>
<value>10</value> <!-- 日志备份数量 -->
</property>
tail -f /var/log/hadoop/hdfs/audit.log实时查看操作记录,或使用grep命令筛选特定用户的操作(如grep "alice" /var/log/hadoop/hdfs/audit.log)。7. 定期维护(保持权限有效性)
hdfs dfs -ls /user),确保敏感目录(如/tmp、/data)的权限合理(如/tmp可设为777供临时使用,/data需限制为750);userdel -r hadoopuser),并清理其在HDFS中的文件(如hdfs dfs -rm -r /user/hadoopuser);