① java操作LINUX上文件,设置权限问题(懂LINUX的文件操作的帮个忙)
复制完了之后,修改复制后的文件的访问权限,让这个文件可以被nobody可写。这个要看实际情况来定。因为权限开大了,不安全,开小了一样修改不了或者引起其他的问题。
② java修改hdfs上文件权限问题
看来你是开启了HDFS的权限检查功能,这样你访问HDFS,NameNode都会检查访问用户的权限的。
你现在想要修改/process/startall.txt文件的权限,那process目录以及startall.txt的有效用户、有效组以及其权限是什么呢?
假设process目录与startall.txt原始的有效用户和有效组分别为root和supergroup,原始权限为750的话,你若在自己电脑运行上述程序,它会自动获取当前计算机的登录用户,假设为wyc,去访问HDFS,很显然,你的程序连process目录都进不去的。
此外,想要更改一个目录或文件的权限,当前用户则必须是有效用户或超级用户才可以。
想要解决的话,嘿嘿,如果你设置的hadoop.security.authenticationproperty,也就是认证方式为simple的话(默认就是simple),那还可以钻该认证方式的空子,运行程序是伪装成有效用户或者超级用户即可。
此外,有一行代码需要修改一下,我在实验后发现设置权限那一行有误,如下:
//hdfs.setPermission(dstPath,newFsPermission((short)775));
hdfs.setPermission(dstPath,newFsPermission("755"));