移除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
相关产品推荐
相关产品推荐

