HDFS文件權限管理概述
HDFS(Hadoop分布式文件系統)的權限管理機制融合了傳統POSIX權限模型與POSIX ACLs(訪問控制列表),旨在實現細粒度的訪問控制。其核心要素包括用戶(User)(文件/目錄的所有者)、組(Group)(用戶所屬的集合,共享權限)、權限位(定義用戶/組/其他用戶的訪問級別)以及ACLs(擴展細粒度權限)。
HDFS的基礎權限模型與Linux文件系統一致,通過用戶、組、其他用戶三類主體及**讀(r)、寫(w)、執行(x)**三種權限控制訪問:
drwxr-xr-x格式表示(d代表目錄,-代表文件),依次為所有者、所屬組、其他用戶的權限。例如,rwxr-xr--表示所有者有讀寫執行權限,組用戶有讀執行權限,其他用戶僅有讀權限。hdfs dfs -ls /path/to/file_or_dir,輸出示例:drwxr-xr-x - hdfs supergroup 0 2023-01-01 12:00 /data(解釋:目錄,所有者hdfs有rwx權限,所屬組supergroup有r-x權限,其他用戶有r-x權限);hdfs dfs -chmod 755 /path/to/dir(所有者7=rwx,組5=r-x,其他5=r-x);hdfs dfs -chmod u+rwx,g+rx,o+rx /path/to/dir(為用戶添加rwx,為組添加r-x,為其他用戶添加r-x);hdfs dfs -chown newowner:newgroup /path/to/dir;hdfs dfs -chown newowner /path/to/dir;hdfs dfs -chgrp newgroup /path/to/dir;hdfs dfs -chgrp newgroup /path/to/dir。HDFS中,新建文件或目錄的權限默認繼承自父目錄的權限(除非父目錄設置了默認ACL)??赏ㄟ^dfs.permissions參數(hdfs-site.xml)啟用/禁用權限檢查:
true(默認):啟用權限檢查,用戶需遵守權限規則;false(僅測試環境使用):關閉所有權限檢查,任何用戶均可隨意操作。基礎權限模型無法滿足復雜場景(如為特定用戶單獨授權),HDFS通過ACLs實現更細粒度的控制。ACL由多個條目組成,每個條目定義特定用戶/組的權限:
user:username:permissions(如user:hadoop:rwx,為hadoop用戶添加rwx權限);group:groupname:permissions(如group:dev:r-x,為dev組添加r-x權限);mask::permissions(限制組和其他用戶的最大權限,如mask::rwx,則組/其他用戶的權限不能超過rwx);other::permissions(如other::r--,其他用戶僅有讀權限)。default:user:joe:rwx,則joe用戶創建的子目錄自動繼承rwx權限)。hdfs dfs -getfacl /path/to/file_or_dir(輸出示例:user::rwx group::r-x other::r-x);hdfs dfs -setfacl -m user:hadoop:rwx /path/to/dir;hdfs dfs -setfacl -m group:dev:r-x /path/to/dir;hdfs dfs -setfacl -x user:hadoop /path/to/dir;hdfs dfs -setfacl -b /path/to/dir;hdfs dfs -setfacl -m default:user:joe:rwx /path/to/dir(為joe用戶設置默認rwx權限)。hdfs)擁有完全訪問權限,可繞過所有權限檢查(如修改任何文件的權限、刪除任何文件);dfs.permissions.superusergroup(hdfs-site.xml)定義超級用戶組(如hadoop),組內成員均擁有超級用戶權限;HDFS權限管理的核心配置參數位于hdfs-site.xml,主要包括:
dfs.permissions.enabled:是否啟用權限檢查(默認true);dfs.permissions.superusergroup:超級用戶組(默認hadoop);dfs.namenode.acls.enabled:是否啟用ACLs(默認true);dfs.datanode.acls.enabled:是否啟用DataNode端的ACLs(默認true)。