前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系

正文

概述

Hadoop分布式文件系统实现了一个和 POSIX 系统类似的文件和目录的权限模式。

每个文件和目录有一个所有者(Owner)和一个组(Group)。

文件或目录对其所有者、同组的其他用户以及所有其他用户分别有着不同的权限

  1. 对文件而言,当读取这个文件时需要有r权限,当写入或者追加到文件时需要有w权限。
  2. 对目录而言,当列出目录内容时需要具有r权限,当新建或删除子文件或子目录时需要有权限,当访问目录的子节点时需要有x权限。
  3. 不同于 POSIX 模型,为了简单起见,此处没有目录的 sticky、 setuid 或 setgid 位。

总的来说文件或目录的权限即为它的模式(Mode)。

HDFS采用了UNIX表示和显示模式的习惯,包括使用八进制数来表示权限。

当新建一个文件或目录,它的所有者即客户进程的用户,它的所属组为父目录的组(BSD的规定)。

每个访问HDFS的用户进程的标识分为两部分,分别为用户名和组名列表。

每次用户进程访问一个文件或目录 ,HDFS都要对其进行权限检査

  1. 如果用户 即 目录的所有者,则检查所有者的访问权限。
  2. 如果 目录 关联的组在组名列表中出现,则检查组用户的访问权限。
  3. 否则检查 目录 其他用户的访问权限。

如果权限检査失败,则客户的操作会失败。

用户身份

在目前版本中,客户端用户身份是通过宿主操作系统给出的,对类UNIX系统来说:

  1. 用户名等于 whoami
  2. 组列表等于 bash -c groups

期望用前面提到的方式来防止一个用户假冒另一个用户是不现实的。

这种用户身份识别机制结合权限模型允许一个协作团体以一种有组织的形式共享文件系统中的资源。

不管怎样,用户身份机制对HDFS本身来说只是外部特性。HDFS并不提供创建用户身份、创建组或处理用户凭证等功能。

系统的实现

每次文件或目录操作都传递完整的路径名给 NameNode,每一个操作都会对此路径做权限检査。

客户框架会隐式地将用户身份与 NameNode 的连接关联起来,从而减少改变现有客户端API的需求。

经常会有这种情况,当对一个文件的某一操作成功后,之后同样的操作却失败,这是因为文件或路径上的某些目录已经不复存在了。

例如,客户端先开始读一个文件,它向 NameNode发出一个请求以获取文件第一个数据块的位置,但接下来获取其他数据块的第二个请求可能会失败。

另外,删除一个文件并不会撤销客户端已经获得的对文件数据块的访问权限。

而权限管理能使客户端对一个文件的访问许可在两次请求之间被收回。权限的改变并不会撤销当前客户端对文件数据块的访问许可。

MapReduce 框架通过传递字符串来指派用户身份,没有做其他特别的安全方面的考虑。

文件或目录的所有者和组属性是以字符串的形式保存的,而不是像传统的UNIX方式转换为用户和组的数字ID。

超级用户

超级用户即运行 NameNode 进程的用户

宽泛地讲,如果启动了 NameNode,启动者即为超级用户。

超级用户可以做任何事情,因为超级用户能够通过所有的权限检査。

没有永久记号来保留谁过去为超级用户。当 NameNode 开始运行时,进程自动判断谁现在为超级用户。

HDFS的超级用户不一定非得为 NameNode 主机上的超级用户,也不需要所有的集群的超级用户都为一个。

同样地,在个人工作站上运行 HDFS 的实验者,无须任何配置即已方便地成为他的部署实例的超级用户。

另外,管理员可以用配置参数指定一组特定的用户,如果做了设定,这个组的成员也会成为超级用户。

Web服务器

Web服务器的身份为一个可配置参数。

NameNode 并没有真实用户的概念,但 Web 服务器表现得就像它具有管理员选定的用户的身份(用户名和组)一样。

除非这个选定的身份是超级用户,否则会有名字空间中的一部分对 Web 服务器来说不可见。

在线升级

如果集群在0.19版本的数据集(FSImage)上启动,所有的文件和目录都有所有者 O、组 G 和模式 M,此处 O 和 G 分别为超级用户的用户标识和组名,M 为一个配置参数

配置参数

dfs.permissions=true

如果为true,则打开前文所述的权限系统。

如果为 false,权限检查即为关闭的,但是其他行为没有改变。这个配置参数的改变并不改变文件或目录的模式、所有者和组等信息。

不管权限模式是开还是关, chmod、 chgrp 和 chown总是会检查权限。

这些命令只有在权限检査背景下オ有用,所以不会有兼容性问题。

这样,就能让管理员在打开常规的权限检査之前可以可靠地设置文件的所有者和权限。

dfs.web.ugi=webuser,webgroup

Web服务器使用的用户名。

如果将这个参数设置为超级用户的名称,则所有 Web 客户就可以看到所有的信息。

如果将这个参数设置为一个不使用的用户,则 Web 客户就只能访问到 other 权限可访问的资源了。

额外的组可以加在后面,形成一个用逗号分隔的列表。

dfs.permissions.supergroup=supergroup

超级用户的组名。

dfs.upgrade.permission=777

升级时的初始模式。

文件永远不会被设置x权限。在配置文件中,可以使用十进制数

dfs.umask=002

umask参数在创建文件和目录时使用。

在配置文件中,可以使用十进制数18。

HDFS 的权限管理不可怕,一篇文章搞懂它相关推荐

  1. 一篇文章搞懂filebeat(ELK)

    一篇文章搞懂filebeat(ELK) https://www.cnblogs.com/zsql/p/13137833.html 目录 一.filebeat是什么 1.1.filebeat和beats ...

  2. c++ 计算正弦的近似值_一篇文章搞懂正弦保真性

    本文介绍数字信号处理中"正弦保真性"这一概念,想要更好地理解本文所述内容,建议读者先阅读<一篇文章搞懂卷积>. 正弦保真性定义 一个正弦信号作为线性时不变系统的输入时, ...

  3. 一篇文章搞懂 HDFS ACLs权限管理

    小米的HDFS承载了公司内多个部门几十条业务线的几十PB数据,这些数据有些是安全级别非常高的用户隐私数据,也有被广泛被多个业务线使用的基础数据,不同的业务之间有着复杂的数据依赖.因此,如何管理好这些数 ...

  4. 一篇文章搞懂 HDFS 的 Archive 到底是什么

    前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...

  5. 【一篇文章搞懂】什么是分布式锁?为什么要用分布式锁?看这篇文章准没错!

    简介 HikariCP 是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,和 dr ...

  6. 一篇文章搞懂架构师的核心技能

    " 这是架构师系列的第一篇:核心技能,希望这个系列能完全揭示架构师这个职位:我先从核心技能开始,后续还有架构师之路,架构实战等架构师系列文章. 本文作者 陈睿 优知学院创始人,前携程定制旅游 ...

  7. 一篇文章搞懂算法基础

    源码地址 https://github.com/javanan/DataStructure 目录 时间复杂度介绍 空间复杂度介绍 递归算法与非递归算法区别和转换 折半查找/二分查找算法 链表实现 反转 ...

  8. 一篇文章搞懂STL中的空间配置器allocator(原创,多图,易懂)

    Table of Contents 0.引入 1.标准的空间配置器allocator 2.更为高效的空间配置器alloc 2.1----对象的构造与析构 2.1.1 对象的构造:::construct ...

  9. 一篇文章搞懂 HDFS 的配额管理

    前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...

最新文章

  1. 6月共处理钓鱼网站8186个:非CN域名达8029个
  2. 解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问...
  3. Boost Asio run() run_one() poll() poll_one()的区别
  4. 数据结构和算法——八种常用的排序算法------归并排序
  5. Revit (6) - Teigha - LayerTable
  6. 尚硅谷大数据听课笔记 day2:数据类型
  7. Java面试题 - 数据结构与算法
  8. Ubuntu 8.10之小白鼠体验
  9. linux中文是楷体,Linux中安装宋体楷体
  10. 爆音(杂音)问题的推论与解决
  11. 三种嵌入式操作系统的分析与比较
  12. PLSQL登录时怎么输入数据库地址
  13. 【ABAP系列】SAP ABAP smartforms设备类型CNSAPWIN不支持页格式ZXXX
  14. 逆向入门,pc微信多开
  15. 1到1000的奇数和偶数和
  16. webshell多种方法免杀
  17. java 批量执行 sql_JDBC批量执行SQL
  18. 绘图计算机配置,专业设计制图需要什么样的电脑?制图电脑配置要求 (全文)
  19. java nio解决半包 粘包问题
  20. 真题丨2018 年 7 月 28 日贵州省遵义市播州区事业单位面试真题(综合岗)

热门文章

  1. 21分钟Mysql入门教程
  2. 4s团队项目前端layui整合使用步骤
  3. 强网杯团队赛---Misc
  4. 【控制工程】啥是控制工程?拉开控制工程的帷幕
  5. Chapter 76 - 89
  6. Java编程基础19——Map集合斗地主案例
  7. python之路--生成器
  8. 同星T1014在线回放设置
  9. JAVA 通过属性名称 获取属性值、设置属性值
  10. matlab编程999玫瑰花,网上收到的用matlab画玫瑰花的代码怎么不行啊,报告错误,求大神...