java修改hdfs上文件權限的問題?
看來你是開啟了HDFS的權限檢查功能,這樣你訪問HDFS,NameNode都會檢查訪問用戶的權限的。
你現在想要修改/process/startall.txt文件的權限,那process目錄以及startall.txt的有效用戶、有效組以及其權限是什么呢?
假設process目錄與startall.txt原始的有效用戶和有效組分別為root和supergroup,原始權限為750的話,你若在自己電腦運行上述程序,它會自動獲取當前計算機的登錄用戶,假設為wyc,去訪問HDFS,
很顯然,你的程序連process目錄都進不去的。
此外,想要更改一個目錄或文件的權限,當前用戶則必須是有效用戶或超級用戶才可以。
想要解決的話,嘿嘿, 如果你設置的hadoop.security.authentication property,也就是認證方式為simple的話(默認就是simple),那還可以鉆該認證方式的空子,運行程序是偽裝成有效用戶或者超
級用戶即可。
此外,有一行代碼需要修改一下,我在實驗后發現設置權限那一行有誤,如下:
//hdfs.setPermission(dstPath, new FsPermission((short) 775));
hdfs.setPermission(dstPath, new FsPermission("755"));