HDFS权限管理操作指南
HDFS(Hadoop分布式文件系统)的权限管理通过POSIX风格权限模型(用户/组/其他人+读写执行权限)和**ACL(访问控制列表)**实现,支持细粒度的访问控制。以下是具体操作步骤:
在配置权限前,需确保HDFS服务启用了权限检查和ACL功能,需修改core-site.xml和hdfs-site.xml配置文件:
core-site.xml:添加或修改以下属性,启用代理用户权限(允许特定用户代理其他用户访问):<property>
<name>hadoop.proxyuser.hdfs.hosts</name>
<value>*</value> <!-- 允许所有主机 -->
</property>
<property>
<name>hadoop.proxyuser.hdfs.groups</name>
<value>*</value> <!-- 允许所有组 -->
</property>
hdfs-site.xml:启用权限检查和ACL:<property>
<name>dfs.permissions.enabled</name>
<value>true</value> <!-- 启用权限检查 -->
</property>
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value> <!-- 启用Namenode的ACL -->
</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的用户和组概念与Linux系统一致,需通过Linux命令创建用户和组,并映射到HDFS:
# 创建组
sudo groupadd hadoopgroup
# 创建用户并加入组
sudo useradd -G hadoopgroup hadoopuser
# 设置用户密码
sudo passwd hadoopuser
hdfs dfs -mkdir -p /user/hadoopuser
hdfs dfs -chown hadoopuser:hadoopgroup /user/hadoopuser
这样,hadoopuser用户即可在HDFS中拥有专属目录。使用hdfs dfs -chmod、-chown、-chgrp命令设置文件/目录的基本权限:
755=所有者rwx,组r-x,其他r-x;644=所有者rw-,组r–,其他r–):# 设置目录权限为755(所有者可读写执行,组和其他可读执行)
hdfs dfs -chmod 755 /user/hadoopuser/data_dir
# 设置文件权限为644(所有者可读写,组和其他可读)
hdfs dfs -chmod 644 /user/hadoopuser/data_file.txt
# 修改所有者为hadoopuser,组为hadoopgroup
hdfs dfs -chown hadoopuser:hadoopgroup /user/hadoopuser/data_file.txt
# 仅修改组为hadoopgroup
hdfs dfs -chgrp hadoopgroup /user/hadoopuser/data_dir
/user目录):hdfs dfs -chmod 1777 /user # 1表示粘滞位
ACL用于为特定用户或组设置额外权限(超出基本权限范围),支持user:、group:、other:和default:(默认ACL,继承给子目录/文件):
# 为用户hadoopuser添加读写执行权限
hdfs dfs -setfacl -m user:hadoopuser:rwx /user/hadoopuser/data_dir
# 为组hadoopgroup添加读权限
hdfs dfs -setfacl -m group:hadoopgroup:r /user/hadoopuser/data_file.txt
# 设置默认ACL(子目录/文件继承)
hdfs dfs -setfacl -m default:user:hadoopuser:rwx /user/hadoopuser/data_dir
hdfs dfs -getfacl /user/hadoopuser/data_dir
# 删除用户hadoopuser的所有权限
hdfs dfs -setfacl -x user:hadoopuser /user/hadoopuser/data_dir
# 删除所有默认ACL
hdfs dfs -setfacl -b /user/hadoopuser/data_dir # 清除所有ACL
通过以下命令验证权限设置是否生效:
hdfs dfs -ls /path/to/file_or_dir(显示所有者、组、权限);su - hadoopuser)执行hdfs dfs -cat、hdfs dfs -put等命令,验证是否能访问资源。hdfs dfsadmin -safemode get显示OFF),否则权限设置可能不生效;fs.permissions.umask-mode配置创建文件/目录的默认权限(如022表示文件权限为644,目录为755),可在hdfs-site.xml中修改;core-site.xml中的hadoop.security.authentication=kerberos),确保用户身份验证。