在CentOS上进行HDFS权限管理前,需先修改Hadoop配置文件(core-site.xml、hdfs-site.xml),启用权限检查和ACL功能。
core-site.xml:添加代理用户配置(允许特定用户代理访问HDFS),例如:<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>
</property>
修改完成后,重启HDFS服务使配置生效:
sudo systemctl restart hadoop-hdfs-namenode
sudo systemctl restart hadoop-hdfs-datanode
HDFS的用户和组概念与Linux系统一致,需先创建Linux用户/组,再同步到HDFS。
sudo useradd hadoopuser # 创建用户
sudo passwd hadoopuser # 设置密码
sudo groupadd hadoopgroup # 创建组
sudo usermod -aG hadoopgroup hadoopuser # 将用户加入组
hdfs dfs -mkdir -p /user/hadoopuser # 创建用户目录
hdfs dfs -chown hadoopuser:hadoopgroup /user/hadoopuser # 设置所有者和组
HDFS采用类似Linux的所有者-组-其他三级权限模型,权限位包括r(读)、w(写)、x(执行)。
hdfs dfs -ls /path/to/file_or_dir
# 示例输出:drwxr-xr-x - hadoopuser hadoopgroup 0 2025-10-24 10:00 /data
# 解释:d(目录) rwx(所有者) r-x(组) r-x(其他)
755=所有者rwx、组r-x、其他r-x):hdfs dfs -chmod 755 /path/to/directory
w权限):hdfs dfs -chmod u+w /path/to/file
hdfs dfs -chown hadoopuser:hadoopgroup /path/to/file
hdfs dfs -chown newowner /path/to/file
hdfs dfs -chgrp newgroup /path/to/file
传统权限模型无法满足复杂场景(如给特定用户单独授权),需使用ACL(访问控制列表)。
hdfs-site.xml中dfs.namenode.acls.enabled=true(已配置)。hadoopuser1对/data有rwx权限):hdfs dfs -setfacl -m user:hadoopuser1:rwx /data
hadoopgroup对/data有r-x权限):hdfs dfs -setfacl -m group:hadoopgroup:r-x /data
r-x,则即使用户有rwx,实际也只能r-x):hdfs dfs -setfacl -m mask::r-x /data
hdfs dfs -getfacl /path/to/file_or_dir
# 示例输出:
# user::rwx
# user:hadoopuser1:rwx
# group::r-x
# group:hadoopgroup:r-x
# mask::r-x
# other::r-x
hdfs dfs -setfacl -x user:hadoopuser1 /data
hdfs dfs -setfacl -b /data
hdfs)可绕过所有权限检查,拥有最高权限。可通过dfs.permissions.superusergroup配置超级用户组(如hadoop),组内成员均具有超级用户权限。core-site.xml中的hadoop.security.authentication=kerberos,并获取Kerberos票据(kinit username@REALM)。su - hadoopuser1 # 切换到hadoopuser1
hdfs dfs -ls /data # 检查是否能列出目录
hdfs dfs -cat /data/test.txt # 检查是否能读取文件
core-site.xml中设置hadoop.security.audit.log.path),可通过日志查看访问记录,进一步确认权限执行情况。通过以上步骤,可在CentOS上完成HDFS的权限管理,覆盖从基础权限到细粒度ACL的控制,确保数据安全。