You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移除Hadoop超级用户权限:限制HDFS根目录需sudo写入

解决HDFS根目录无需sudo即可写入的权限配置问题

这个问题问得好!本质就是要调整HDFS的权限控制规则,让普通用户只能在自己的/user/<user_name>目录下自由操作,往根目录这类上层路径写文件必须用sudo以root身份执行。我给你一步步拆解操作:

1. 确保HDFS权限检查功能开启

首先得确认Hadoop的权限检查是打开的,不然所有权限设置都会无效:

  • 打开Hadoop配置目录下的hdfs-site.xml(一般路径是$HADOOP_HOME/etc/hadoop/hdfs-site.xml)
  • 添加或修改以下配置项:
    <property>
        <name>dfs.permissions.enabled</name>
        <value>true</value>
    </property>
    
  • 保存后重启HDFS服务生效:
    stop-dfs.sh
    start-dfs.sh
    

2. 调整HDFS根目录的所有者与权限

接下来要把根目录的控制权交给root用户,同时限制普通用户的写入权限:

  • 首先用HDFS的超级用户(默认是启动NameNode的用户,也就是你当前的普通用户)执行命令,把根目录所有者改成root:
    hdfs dfs -chown root:root /
    
  • 然后修改根目录权限,让只有所有者(root)拥有写入权限,其他用户只能读和执行:
    hdfs dfs -chmod 755 /
    

3. 确保普通用户个人目录权限正常

别忘给你自己的用户目录设置正确的权限,保证你能正常操作自己的空间:

hdfs dfs -chown <你的用户名>:<你的用户名> /user/<你的用户名>
hdfs dfs -chmod 700 /user/<你的用户名>

4. 验证配置效果

  • 用普通用户尝试往根目录写文件,应该会收到权限拒绝的提示:
    hdfs dfs -put test.txt /  # 预期报错:Permission denied
    
  • 用sudo以root身份执行写入,就能成功:
    sudo -u root hdfs dfs -put test.txt /  # 执行成功
    

这样配置后,就实现了你要的效果:普通用户只能在自己的/user/<user_name>目录下操作,往根目录或其他上层路径写内容必须通过sudo切换到root身份才行。

内容的提问来源于stack exchange,提问作者AlwaysLearning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 00:57:31