需要明确的是,我不是在询问在HDFS 中设置权限,而是在 ext3 或任何正在运行 HDFS 的单个数据节点机器上使用的文件系统。
我知道我们设置了sudo chown hduser:hadoop /app/hadoop/tmp
,所以 userhduser
是文件所有者,但我想知道这些文件的权限位 (chmod) 的指导方针。
需要明确的是,我不是在询问在HDFS 中设置权限,而是在 ext3 或任何正在运行 HDFS 的单个数据节点机器上使用的文件系统。
我知道我们设置了sudo chown hduser:hadoop /app/hadoop/tmp
,所以 userhduser
是文件所有者,但我想知道这些文件的权限位 (chmod) 的指导方针。
如果您将权限设置为755(更糟糕的是777),则任何人都可以读取底层文件系统中的文件,这肯定是一个安全问题。诸如700之类的限制性权限配置是有意义的。这可以防止未经授权的用户简单地从本地磁盘打开和读取文件,而不是使用 HDFS API。
在从Hadopo 版本 0.22、0.23 fix 开始的安全配置集群中,datanode 数据目录的权限(由 dfs.datanode.data.dir.perm 配置)现在默认为 0700。启动时,datanode 将自动更改权限以匹配配置的值。
在 1.0 中,datanode 检查这些值是否相同,如果它们不同则拒绝启动。如果已经提供给数据存储位置的权限违反了为 Hadoop 配置的默认权限,您可能会遇到如下异常。
警告 org.apache.hadoop.hdfs.server.datanode.DataNode:dfs.data.dir 中的目录无效:/disk1/datanode 的权限不正确,预期:rwxr-xr-x,而实际:rwxrwxr-x
不过,我不太确定其他版本中发生了什么。不过你可能想看看自己。
我不知道我是否正确理解了您的问题,但这里有一些信息:
设置本地文件系统的权限
设置权限显然是真实的和需要的。实际上,此权限可以通过防止非用户甚至非所有者修改您的数据来增强您的集群安全性。即使您可能会使用较低的安全性来设置集群,但在安装后您可以修改它们以安全使用。
顺便说一句,将您的权限设置为 777 几乎从来都不是一个好的解决方案,即使它并不意味着直接的麻烦。
[编辑]:良好的行为是试图设置尽可能少的权利。因此,当 Hadoop 工作时,尝试设置较低的访问权限(最好是 720)。但我不能保证 hadoop 可以使用 755 以外的其他权限,因为它是默认值。
几乎跑题了
对于 CHMOD 位
值由以下人员设置:所有者用户其他这些值中的每一个都具有 3 种功能:读取写入执行(按此顺序)由于这些功能可以设置为 true(1) 或 false(0),因此会产生给定的八进制值通过二进制值。
例如
,对于所有者,您希望一切正常,因此 rwx => 111 = 4 + 2 + 1 = 7
用户仅读取和执行,rx => 101 = 4+0+1 = 5
其他人相同,rx => 101 = 4+0+1 = 5
所以你必须做一个 chmod 755 文件
用于主机文件系统上的 hdfs 权限
Hadoop 对其文件系统上的文件和目录访问权限非常敏感。因此,如果您没有正确设置它们,它可能会引发异常,甚至会阻止名称节点或数据节点启动。
据我所知,您的文件的某些部分必须由 hadoop:hadoop 或 hdfs:hadoop 拥有,而另一些则由 mapred:hadoop 拥有(根据您的 hdfs 和 mapred 用户和组)。