要启用HDFS权限管理,需修改core-site.xml和hdfs-site.xml两个核心配置文件:
core-site.xml:添加代理用户配置,允许特定用户通过代理访问HDFS(如YARN等组件需要):<property>
<name>hadoop.proxyuser.hadoopuser.hosts</name>
<value>*</value> <!-- 允许所有主机 -->
</property>
<property>
<name>hadoop.proxyuser.hadoopuser.groups</name>
<value>*</value> <!-- 允许所有组 -->
</property>
hdfs-site.xml:启用权限检查和ACL功能:<property>
<name>dfs.permissions.enabled</name>
<value>true</value> <!-- 启用权限检查(默认true,生产环境建议保持) -->
</property>
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value> <!-- 启用ACL(默认false,需手动开启) -->
</property>
<property>
<name>dfs.datanode.acls.enabled</name>
<value>true</value> <!-- DataNode支持ACL -->
</property>
修改完成后,重启HDFS服务使配置生效:sudo systemctl restart hadoop-hdfs-namenode
sudo systemctl restart hadoop-hdfs-datanode
HDFS权限基于用户-组模型,需先在CentOS系统中创建用户和组,并确保HDFS服务以正确用户(通常为hdfs)运行:
sudo groupadd hadoopgroup # 创建组
sudo useradd -G hadoopgroup hadoopuser # 创建用户并加入组
sudo passwd hadoopuser # 设置用户密码
/user/hdfs)需归属hdfs用户和组,确保服务正常运行:sudo -u hdfs hdfs dfs -mkdir -p /user/hdfs # 创建目录(以hdfs用户身份)
sudo -u hdfs hdfs dfs -chown hdfs:hadoopgroup /user/hdfs # 设置所有权
sudo -u hdfs hdfs dfs -chmod 700 /user/hdfs # 限制目录权限(仅hdfs用户可访问)
使用HDFS命令行工具可快速管理文件/目录权限:
755)和符号模式(如u+rwx,g+rx,o+rx),示例:hdfs dfs -chmod 755 /user/hdfs/public # 数字模式:所有者rwx,组和其他rx
hdfs dfs -chmod u+w,g-w,o-w /user/hdfs/private # 符号模式:所有者加写,组和其他减写
hdfs用户),示例:sudo -u hdfs hdfs dfs -chown hadoopuser:hadoopgroup /user/hdfs/data # 修改所有者和组
sudo -u hdfs hdfs dfs -chown :hadoopgroup /user/hdfs/data # 仅修改组
hdfs dfs -chgrp hadoopgroup /user/hdfs/data # 将目录所属组改为hadoopgroup
若需更灵活的权限(如为用户单独授权),可使用ACL(访问控制列表),支持针对特定用户/组的权限设置:
hdfs dfs -setfacl命令,示例:hdfs dfs -setfacl -m user:hadoopuser:rwx /user/hdfs/project # 为用户hadoopuser添加rwx权限
hdfs dfs -setfacl -m group:devgroup:rx /user/hdfs/project # 为组devgroup添加rx权限
hdfs dfs -setfacl -m mask::rwx /user/hdfs/project # 设置mask(限制组和其他用户的最大权限)
hdfs dfs -getfacl命令,示例:hdfs dfs -getfacl /user/hdfs/project
输出示例:user::rwx
user:hadoopuser:rwx
group::r-x
group:devgroup:rx
mask::rwx
other::r-x
hdfs dfs -setfacl -x user:hadoopuser /user/hdfs/project # 删除指定用户的ACL
hdfs dfs -setfacl -b /user/hdfs/project # 删除所有ACL(恢复默认权限)
755,子目录默认也为755)。若需关闭继承,可通过dfs.permissions.umask-mode配置(如umask=027则子目录权限为750)。hdfs),拥有所有权限。可通过dfs.permissions.superusergroup配置超级用户组(如hadoop),组内成员均具备超级用户权限。core-site.xml和hdfs-site.xml中的hadoop.security.authentication等参数。通过以下命令验证权限设置是否生效:
hdfs dfs -ls /user/hdfs/project
输出示例:drwxr-xr-x - hadoopuser hadoopgroup 0 2025-10-01 10:00 /user/hdfs/project
hdfs dfs -cat /user/hdfs/project/test.txt # 测试读取权限
hdfs dfs -put localfile.txt /user/hdfs/project # 测试写入权限
通过以上步骤,可在CentOS环境下完成HDFS权限管理的基础配置与细粒度控制,确保数据安全。