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

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

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

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

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

此外,在 Unix 式系統上,使用者和群組會映射到數值識別符,Amazon EFS會使用這些識別符來表示檔案擁有權。對於 Amazon EFS,檔案系統物件 (即檔案、目錄等) 由單一擁有者和單一群組擁有。當使用者嘗試存取檔案系統物件時,Amazon EFS會使用映射的數值IDs來檢查許可。

注意

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

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

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

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

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

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 檔案系統擁有權變更為非使用者和群組,請使用下列各項:

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

      $ sudo chmod 777 /EFSroot

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

檔案系統內檔案和目錄的使用者和群組 ID 許可

Amazon EFS 檔案系統中的檔案和目錄支援根據使用者 ID 和群組 的標準 Unix 樣式讀取、寫入和執行許可IDs。當NFS用戶端在沒有使用存取點的情況下掛載EFS檔案系統時,用戶端提供的使用者 ID 和群組 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相同,無論使用的EC2執行個體為何,Amazon 都會EFS將其視為指示相同的使用者。從兩個EC2執行個體存取檔案系統時的使用者體驗相同。

  • 如果兩個EC2執行個體的使用者IDs不同,Amazon 會將使用者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 Mapper 的常駐程式,可管理使用者名稱與 之間的映射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動作時,可以在用戶端連線上啟用根截斷。啟用根清除時,根使用者會轉換為NFS伺服器上具有有限許可的使用者。

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

使用NFS用戶端IAM的授權啟用根清除

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

若要這麼做,需要設定兩個IAM許可政策,如下所示:

  • 建立EFS檔案系統政策,明確允許對檔案系統的讀取和寫入存取,並隱含拒絕根存取。

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

  • AmazonElasticFileSystemClientFullAccess AWS 受管政策指派給 管理工作站IAM的角色。如需 受 AWS 管政策的詳細資訊EFS,請參閱 Amazon 的身分和存取管理 EFS

若要使用NFS用戶端IAM的授權啟用根清除,請使用下列程序。

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

  2. 選擇檔案系統

  3. 選擇您要啟用根清除的檔案系統。

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

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

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

非匿名用戶端可以透過以身分為基礎的政策取得檔案系統的根存取權。當您將AmazonElasticFileSystemClientFullAccess受管政策連接至工作站的角色時, 會根據其身分政策授予工作站IAM根存取權。

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

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

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

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

    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. 使用下列命令搭配掛載選項,將EFS檔案系統iam掛載至管理工作站。

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

    您可以設定 Amazon EC2執行個體,以自動掛載具有IAM授權的檔案系統。如需使用IAM授權掛載EFS檔案系統的詳細資訊,請參閱 使用IAM授權掛載

權限快取

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

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

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

EFS 存取點

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