通过dfs.umask可以控制在hdfs上创建的文件夹和文件的属性,该值的默认值为0022。
今天想修改dfs.umask的时候发现,这个参数和linux中的umask不大一样。
比如我想让文件的属性为-rw-r–r–,那么在linux中应该设置umask为022,而设置dfs.mask的值为0022的时候,结果并不是我希望的。
后来发现在dfs.umask存储的10进制的值,对于linux的umask的022,对应10进制就是0018。
设置如下:
0018 再次创建文件,权限已经正确了。
-rw-r–r– 1 hadoop supergroup 5 2012-05-29 15:21 /sunwg/3.dat
Coding:
conf.setInteger( "dfs.umask", xxx to the base 10);
Configure file:
<property>
<name>dfs.umask</name>
<value>???</value>
</property>
Update:
linux中的umask参数是八进制,而hadoop中类似作用的参数采用的是十进制,这样想要写入的文件权限为rwxr-x---(750),linux中umask需设为027,对应的十进制为2*8+7=23,所以将dfs.umask参数设为023,即可达到目的。
ref: http://www.oratea.net/?p=1279
http://archive.cloudera.com/cdh/3/hadoop/hdfs_permissions_guide.html