網路檔案系統 (NFS) 層級的使用者、群組和權限 - Amazon Elastic File System

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

網路檔案系統 (NFS) 層級的使用者、群組和權限

建立檔案系統之後,預設情況下,只有 root 使用者 (UID0) 具有讀取、寫入和執行權限。若要讓其他使用者能夠修改檔案系統,根使用者必須明確地授予存取權給這些使用者。您可以使用存取點來自動建立非根使用者可寫入的目錄。如需詳細資訊,請參閱使用 Amazon EFS 存取點

Amazon EFS 檔案系統物件具有與它們相關聯的 UNIX 樣式模式。此模式值定義了對該物件執行動作的許可。熟悉 Unix 風格系統的使用者可以輕鬆瞭解 Amazon 在這些許可EFS方面的行為。

此外,在 Unix 風格的系統上,使用者和群組會對應至數值識別碼,Amazon EFS 用來表示檔案擁有權。對於 Amazon 而言EFS,檔案系統物件 (亦即檔案、目錄等) 由單一擁有者和單一群組擁有。當EFS使用者嘗試存IDs取檔案系統物件時,Amazon 會使用對應的數字來檢查許可。

注意

此NFS通訊協定最多支援每位使用者 16 個群組 IDs (GIDs),而任何額外的群組GIDs都會從用NFS戶端要求中截斷。如需詳細資訊,請參閱拒絕訪問文件系統上允許的NFS文件

接下來,您可以找到許可範例,以及有關 Amazon NFS 許可考量事項的討論EFS。

Amazon EFS 檔案系統使用案例和許可範例

在您建立 Amazon EFS 檔案系統並為檔案系統掛載目標之後VPC,您就可以在 Amazon EC2 執行個體本機掛載遠端檔案系統。mount 指令可以掛載檔案系統中的任何目錄。不過,當您首次建立檔案系統時,只會有一個位於 / 的根目錄。根使用者和根群組擁有掛載的目錄。

以下mount命令會在/efs-mount-point本機目錄上掛載 Amazon EFS 檔案系統的根目錄 (以檔案系統DNS名稱識別)。

sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.efs.aws-region.amazonaws.com:/ efs-mount-point

最初的權限模式允許:

  • 對擁有者read-write-execute 權限

  • 對群組read-execute 權限

  • 對其他項目的 read-execute 權限

只有根使用者能修改此目錄。根使用者還能授予其他使用者寫入此目錄的許可,例如:

  • 建立可寫入的每個使用者子目錄。如需 step-by-step 指示,請參閱教學課程:建立可寫入的每個使用者子目錄

  • 允許使用者寫入 Amazon EFS 檔案系統根目錄。具備根權限的使用者,可以授予其他使用者對檔案系統的存取權限。

    • 若要將 Amazon EFS 檔案系統擁有權變更為非 root 使用者和群組,請使用以下指令:

      $ sudo chown user:group /EFSroot
    • 若要讓檔案系統的權限變得更加寬鬆,請使用下列程式碼:

      $ sudo chmod 777 /EFSroot

      這個命令會將 read-write-execute 權限授與所有已掛載檔案系統之EC2執行個體上的所有使用者。

檔案系統內檔案和目錄的使用者和群組 ID 權限

Amazon EFS 檔案系統中的檔案和目錄支援基於使用者 ID 和群組的標準 Unix 式讀取、寫入和執行許可。IDs當用NFS戶端在不使用存取點的情況下掛載EFS檔案系統時,用戶端所提供的使用者 ID 和群組識別碼會受到信任。您可以使用EFS存取點覆寫用NFS戶端使用的使IDs用者 ID 和群組。當使用者嘗試存取檔案和目錄時,Amazon EFS 會檢查其使用者IDs和群組,IDs以確認每個使用者都有存取物件的權限。Amazon EFS 也會使用這些IDs指示使用者建立的新檔案和目錄的擁有者和群組擁有者。Amazon EFS 不會檢查使用者或群組名稱,只使用數字識別碼。

注意

當您在EC2執行個體上建立使用者時,您可以將任何數字的使用者 ID (UID) 和群組 ID (GID) 指派給使用者。數字用戶IDs是在 Linux 系統上的/etc/passwd文件中設置的。數字群組IDs位於/etc/group檔案中。這些檔案定義了名稱與之間的對應IDs。在執行EC2個體之外,Amazon EFS 不會執行這些驗證的任何身份驗證IDs,包括根 ID 為 0。

如果使用者從兩個不同的EC2執行個體存取 Amazon EFS 檔案系統,視使用者在這些執行個體上是相同還是不同而定,您會看到不同的行為,如下所示:UID

  • 如果兩EC2個執行個體的使用者IDs相同,Amazon EFS 會考慮使用相同的使用者,無論使用何種EC2執行個體。從兩EC2個實例訪問文件系統時的用戶體驗是相同的。

  • 如果兩個執行個體的使用者IDs不相同,EC2Amazon EFS 會將使用者視為不同的使用者。從兩個不同的EC2執行個體存取 Amazon EFS 檔案系統時,使用者體驗不一樣。

  • 如果不同EC2執行個體上的兩個不同使用者共用一個 ID,Amazon EFS 會將他們視為同一個使用者。

您可以考慮一致地跨EC2執行個體管理使用者 ID 對應。使用者可以使用 id 指令來查看自己的數字 ID。

$ id uid=502(joe) gid=502(joe) groups=502(joe)

關閉 ID 映射器

作業系統中的NFS公用程式包含稱為 ID 對應程式的守護程式,可管理使用者名稱與IDs之間的對應。在 Amazon Linux 中,背景行程稱為 rpc.idmapd;在 Ubuntu 上,背景行程稱為 idmapd。它翻譯用戶和組IDs成名稱,反之亦然。但是,Amazon 僅EFS處理數字IDs。建議您在EC2執行個體上關閉此程序。在 Amazon Linux 上,ID 映射器通常是停用的,如果已停用,請勿將其啟用。若要關閉 ID 映射器,請使用如下所示的命令。

$ service rpcidmapd status $ sudo service rpcidmapd stop

不要進行根權限壓縮

依預設,EFS檔案系統上會停用根擠壓。Amazon 的EFS行為就像一個 Linux NFS 服務器no_root_squash。如果使用者或群組 ID 為 0,Amazon 會EFS將該使用者視為root使用者,並略過許可檢查 (允許存取和修改所有檔案系統物件)。當 AWS Identity and Access Management (AWS IAM) 身分識別或資源原則不允許存取ClientRootAccess動作時,可以在用戶端連線上啟用根擠壓。啟用 root 擠壓時,root 使用者會轉換為在NFS伺服器上具有有限權限的使用者。

如需詳細資訊,請參閱用IAM來控制檔案系統資料存取

使用用戶端的IAMNFS授權啟用根擠壓

除了單一管理工作站外,您可以設定 Amazon EFS 以防止所有 AWS 主體存取 Amazon EFS 檔案系統的根目錄。您可以透過設定網路檔案系統 AWS Identity and Access Management (IAM) 用戶端的 (NFS) 授權來執行此操作。

若要執行這項操作,需要設定兩個IAM權限原則,如下所示:

  • 建立EFS檔案系統原則,明確允許對檔案系統進行讀取和寫入存取,並隱含拒絕根存取權。

  • 使用 Amazon 執行個體設定檔,將IAM身分指派給需要檔案系統根存取權的 EC2 Amazon EC2 管理工作站。如需 Amazon EC2 執行個體設定檔的詳細資訊,請參閱使用指南中的使用執行個體設定檔。AWS Identity and Access Management

  • AmazonElasticFileSystemClientFullAccess AWS 受管理的原則指派給管理工作站的IAM角色。如需有關的 AWS 受管理策略的詳細資訊EFS,請參閱Amazon 的身份和訪問管理 EFS

若要使用用NFS戶端的IAM授權啟用 root 擠壓,請使用下列程序。

阻止檔案系統的根存取
  1. 在中開啟 Amazon Elastic File System 主控台https://console.aws.amazon.com/efs/

  2. 選擇檔案系統

  3. 選擇您要啟用根擠壓的檔案系統。

  4. 在檔案系統詳細咨詢頁面上,選擇檔案系統政策,然後選擇編輯File system policy (檔案系統政策) 頁面隨即顯示。

  5. 選擇政策選項下的預設*防止根存取。原則JSON物件會出現在 [原則編輯器] 中。

  6. 選擇 Save (儲存) 以儲存檔案系統政策。

非匿名用戶端可以透過以身分為基礎的政策取得檔案系統的根存取權。當您將AmazonElasticFileSystemClientFullAccess受管理的原則附加至工作站的角色時,會根據工作站的身分識別原則IAM授與 root 存取權。

透過管理工作站啟用根存取權
  1. 在開啟IAM主控台https://console.aws.amazon.com/iam/

  2. EC2為 Amazon 創建一個角色稱為EFS-client-root-access。IAM建立與您建立的EC2角色相同名稱的執行個體設定檔。

  3. 將 AWS 受管理的原則指派AmazonElasticFileSystemClientFullAccess給您建立的EC2角色。本政策的內容如下所示。

    { "Version”: "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticfilesystem:ClientMount", "elasticfilesystem:ClientRootAccess", "elasticfilesystem:ClientWrite", "elasticfilesystem:DescribeMountTargets" ], "Resource": "*" } ] }
  4. 將執行環境設定檔附加至您作為管理工作站使用的EC2執行環境,如下所述。如需詳細資訊,請參閱 Amazon Linux 執行個體EC2使用者指南中的將IAM角色附加至執行個體

    1. 在打開 Amazon EC2 控制台https://console.aws.amazon.com/ec2/

    2. 在導覽窗格中,選擇 Instances (執行個體)。

    3. 選擇執行個體。在 [動] 中選擇 [執行個體設定],然後選擇 [附加/取代IAM角色]。

    4. 選擇您在第一個步驟中建立的IAM角色EFS-client-root-access,然後選擇「套用」。

  5. 在管理工作站上安裝裝EFS載輔助程式。如需有關EFS掛載輔助程式和 amazon-efs-utils 套件的詳細資訊,請參閱安裝 Amazon EFS 客戶端

  6. 使用下列指令搭配掛載選項,在管理工作站上iam掛載EFS檔案系統。

    $ sudo mount -t efs -o tls,iam file-system-id:/ efs-mount-point

    您可以將 Amazon EC2 執行個體設定為透過IAM授權自動掛接檔案系統。如需有關使用IAM授權掛載EFS檔案系統的更多資訊,請參閱使用IAM授權掛載

權限快取

Amazon 會在一小段時間內EFS快取檔案許可。因此,使用者存取權最近已被撤銷,但可能會有一段短暫的時間,使用者仍可存取該物件。

變更檔案系統物件的所有權

Amazon EFS 強制執行該POSIXchown_restricted屬性。這表示只有根使用者可以變更檔案系統物件的擁有者。根使用者或擁有者使用者可以變更檔案系統物件的擁有者群組。不過,但除非使用者為根使用者,否則只能將群組變更為擁有者使用者所屬的群組。

EFS存取點

「存取點」會使用存取點,將作業系統使用者、群組和檔案系統路徑套用至請求提出的任何檔案系統。存取點的作業系統使用者和群組會覆寫用NFS戶端提供的任何身分資訊。檔案系統路徑會公開給用戶端作為存取點的根目錄。此方法可確保每個應用程式在存取共用檔案型資料集時,一律使用正確的作業系統身分和正確的目錄。使用存取點的應用程式只能在其專屬目錄及子目錄中存取資料。如需存取點的詳細資訊,請參閱 使用 Amazon EFS 存取點