在Ubuntu系统中,首先需要创建专用的Hadoop用户和组,用于隔离权限。例如创建hadoop组及hdfs用户:
sudo groupadd hadoop # 创建hadoop用户组
sudo useradd -g hadoop hdfs # 创建hdfs用户并加入hadoop组
sudo passwd hdfs # 设置hdfs用户密码
若需多租户环境,可创建多个用户(如user1、user2)并均加入hadoop组:
sudo adduser user1
sudo usermod -aG hadoop user1 # 将user1添加到hadoop组
HDFS的权限模型基于POSIX风格,需通过hdfs-site.xml启用权限检查(默认开启):
<!-- 编辑hdfs-site.xml -->
<property>
<name>dfs.permissions.enabled</name>
<value>true</value> <!-- 设为true启用权限检查 -->
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value> <!-- 指定超级用户组(如hadoop组) -->
</property>
修改后重启HDFS使配置生效:
stop-dfs.sh && start-dfs.sh
查看权限:使用hdfs dfs -ls查看HDFS路径的权限信息(类似Linux的ls -l):
hdfs dfs -ls /user/hdfs # 查看/user/hdfs目录权限
输出示例:drwxr-xr-x - hdfs hadoop 0 2025-11-01 10:00 /user/hdfs(所有者hdfs有读写执行权限,组hadoop和其他用户有读执行权限)。
修改权限:使用hdfs dfs -chmod设置权限,支持数字模式(如755)或符号模式(如u+rwx,g+rx,o+rx):
hdfs dfs -chmod 755 /user/hdfs/testdir # 数字模式:所有者rwx,组和其他人rx
hdfs dfs -chmod u+w,g-w,o-w /user/hdfs/testfile.txt # 符号模式:给所有者加写权限,收回组和其他人的写权限
修改所有者/组:使用hdfs dfs -chown更改路径的所有者或所属组:
hdfs dfs -chown hdfs:hadoop /user/hdfs/testdir # 将testdir的所有者设为hdfs,组设为hadoop
hdfs dfs -chown :hadoop /user/hdfs/testfile.txt # 仅修改组为hadoop
若需更细粒度的权限控制(如为特定用户添加权限),可使用ACL。需先在hdfs-site.xml中启用ACL:
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.acls.enabled</name>
<value>true</value>
</property>
重启HDFS后,使用以下命令管理ACL:
user1添加rwx权限):hdfs dfs -setfacl -m user:user1:rwx /user/hdfs/testdir # 给user1添加rwx权限
hdfs dfs -setfacl -m group:hadoop:r-x /user/hdfs/testdir # 给hadoop组添加r-x权限
hdfs dfs -getfacl查看路径的ACL规则:hdfs dfs -getfacl /user/hdfs/testdir
hdfs dfs -setfacl -x user:user1 /user/hdfs/testdir # 删除user1的权限
hdfs dfs -setfacl -b /user/hdfs/testdir # 清除所有ACL规则
若需子目录/文件继承父目录的组权限,可使用chmod g+s命令:
hdfs dfs -chmod g+s /user/hdfs/parent_dir # 子目录/文件将继承parent_dir的组权限
777(所有用户可读写执行),建议根据需求设置最小必要权限(如用户目录用750,公共目录用755)。hdfs)可绕过权限检查,需妥善保管其凭证。core-site.xml启用审计日志,跟踪权限相关的操作:<property>
<name>hadoop.security.audit.log.path</name>
<value>/var/log/hadoop-hdfs/audit.log</value>
</property>
通过以上步骤,可在Ubuntu系统上完成HDFS的权限设置,确保数据的安全性和访问控制。