回覆列表
-
1 # 程式設計頌
-
2 # 汙蒙君
看來你是開啟了HDFS的許可權檢查功能,這樣你訪問HDFS,NameNode都會檢查訪問使用者的許可權的。 你現在想要修改/process/startall.txt檔案的許可權,那process目錄以及startall.txt的有效使用者、有效組以及其許可權是什麼呢? 假設process目錄與startall.t...
看來你是開啟了HDFS的許可權檢查功能,這樣你訪問HDFS,NameNode都會檢查訪問使用者的許可權的。 你現在想要修改/process/startall.txt檔案的許可權,那process目錄以及startall.txt的有效使用者、有效組以及其許可權是什麼呢? 假設process目錄與startall.t...
看來你是開啟了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"));