Dela via


403 Åtkomst nekad auktoriseringsfel när fästbiten är aktiverad i ADLS Gen2

Den här artikeln hjälper dig att förstå den klibbiga biten och innehåller information om hur du kontrollerar den här inställningen när du konfigurerar den i Azure Data Lake Storage (ADLS) Gen2 och får problem.

Vad är den klibbiga biten i ADLS Gen2?

ADLS Gen2-användare behöver ofta hantera behörigheter för olika användare, och ett sätt att göra detta är att använda en åtkomstkontrollista (ACL). ACL är ett POSIX-liknande åtkomstkontrollsystem med en specifik inställning som kallas den klibbiga biten som kan orsaka auktoriseringsfel. Mer information om behörighetskontrollläget och den klibbiga biten finns i Åtkomstkontrollistor (ACL) i Azure Data Lake Storage Gen2.

Den klibbiga biten är en avancerad funktion som inte behövs i ACL-inställningen för ADLS Gen2-lagringskontot. I stället kan du använda maskfunktionen för att begränsa de maximala behörigheterna för namngivna användare, namngivna grupper och ägande grupp. Detta fungerar på samma sätt som den klibbiga biten och är enkelt att konfigurera i Azure Portal.

403 Åtkomst nekad auktoriseringsfel

Föreställ dig följande scenario:

  • Ett ADLS Gen2-lagringskonto har en container med namnet container och en mappsökväg med namnet mapp/underordnad mapp.
  • Du använder ACL som auktoriseringsmetod.
  • I ACL-inställningen för ADLS Gen2-lagringskontot konfigureras du med behörigheten Kör (X) på rotkatalogen och mappen och med behörigheten Skriv och kör (WX) på den underordnade mappen.
  • Den fästiga biten är aktiverad i den underordnade mappen.
  • Du försöker skapa eller ladda upp en ny fil, till exempel test.txt, till mappen ADLS Gen2 Storage Account-mappsökvägen container/mapp/underordnad mapp/.

I det här scenariot får du auktoriseringsfelet 403 Åtkomst nekad.

Det här felet inträffar av två orsaker:

  • Du har inte tillräckligt med behörigheter för att komma åt mappsökvägen.
  • Du har tillräckligt med behörigheter, men om du aktiverar den klibbiga biten blir du inte ägare till den här mappsökvägen.

Identifiera om den klibbiga biten orsakar ett 403-fel om nekad åtkomst

Kontrollera ACL-inställningen för mappen och de överordnade mapparna och jämför den sedan med vanliga scenarier som rör ACL-behörigheter. Om behörigheterna räcker kan 403-felet orsakas av den klibbiga biten.

Verifiera inställningen för fästbit med hjälp av Azure CLI

Det finns många sätt att kontrollera den här inställningen, till exempel ett REST API-anrop, PowerShell-kommando och Azure CLI. Vi rekommenderar Azure CLI-alternativet eftersom det inte kräver någon extra programvara som ska installeras och kommandot är lätt att förstå.

Följ dessa steg för att verifiera inställningen för fästbiten med hjälp av Azure CLI:

  1. Logga in på Azure Portal med ditt konto. Kontrollera att det här kontot har rolltilldelningen Storage Blob Data Owner på ADLS Gen2-lagringskontot.

  2. Välj Cloud Shell från Azure Portal.

    Skärmbild av Cloud Shell-knappen i Azure Portal.

  3. Använd följande kommando för att hämta ACL och den klibbiga bitinställningen för containern/mappkatalogen:

    az storage fs access show -p folder -f container --account-name account --auth-mode login
    

    Om du vill kontrollera ACL och inställningen för sticky bit i rotkatalogen, som är ACL på containernivå och inställningen för fästbit, använder du följande kommando:

    az storage fs access show -p / -f container --account-name account --auth-mode login
    

    Här är ett exempel på utdata:

    Skärmbild av kommandoutdataexemplet.

    I svarets JSON-brödtext fokuserar du på permissions. Den innehåller normalt 9 eller 10 bitar med en extra "+"-symbol. Mer information om dessa bokstäver finns i Användare och identiteter.

    I föregående exempel anges att alla användarbehörigheter är aktiverade och att den klibbiga biten är aktiverad. Mer information om hur du läser den här behörighets notationen finns i Notation av traditionella Unix-behörigheter.

    Den nionde bokstaven har fyra möjliga värden: "-", "x", "t" och "T". Om värdet för den här bokstaven är "t" eller "T" betyder det att den klibbiga biten är aktiverad. "t" är "x" med den klibbiga biten aktiverad och "T" är "-" med den klibbiga biten aktiverad.

    "rwxrwxrwt" kan förklaras med följande:

    • r,w- och x-behörigheter är aktiverade för ägaren.
    • r,w- och x-behörigheter är aktiverade för gruppen Ägande.
    • r-, w- och x-behörigheter är aktiverade för Andra användare och den fästiga biten är aktiverad.

    För att förstå det bättre, här är ett annat exempel för "rwxr-xr-T":

    • r,w- och x-behörigheter är aktiverade för ägaren.
    • r- och x-behörigheter är aktiverade för gruppen Ägande.
    • Endast r-behörighet är aktiverad för Andra användare och fästbiten är aktiverad.

    Enligt korta formulär för behörigheter beräknas kort formulärbehörighet för varje grupp med tre bokstäver ("r" som 4, "w" som 2 och "x"som 1). Därför är "rw-rwx--x" lika med 4+2+0, 4+2+1, 0+0+1, 671. Baserat på den här beräkningsregeln behöver du bara lägga till den fjärde bokstaven i början. Om den klibbiga biten är aktiverad anger du den som 1. Om den klibbiga biten är inaktiverad anger du den som 0.

    Nedan följer några exempel:

    • rwxrwxrwt => 1777
    • rwxr-xr-T => 1754
    • rw-rwx--x => 0671

Inaktivera/aktivera inställningen för fästbit

Om du vill inaktivera/aktivera inställningen för fästbit anger du behörigheter till förväntade värden.

Det Azure-konto som används för att ändra den här inställningen måste ha rollen Lagringsblobdataägare på mål-ADLS Gen2-lagringskontot. Det finns många möjliga sätt att ändra inställningen för fästbit. Här är de SDK:er som stöds:

SDK Version som stöds Mer information
REST-API 2019-12-12 och senare API-versioner Sökväg
Az PowerShell-modul 5.6.0 och senare versioner Använda PowerShell för att hantera ACL:er i Azure Data Lake Storage Gen2
Azure CLI 2.38.0 och senare versioner Använda Azure CLI för att hantera ACL:er i Azure Data Lake Storage Gen2
.NET SDK 12.14.0 och senare versioner Använda .NET för att hantera ACL:er i Azure Data Lake Storage Gen2
Java SDK 12.11.0 och senare versioner Använda Java för att hantera ACL:er i Azure Data Lake Storage Gen2
Python SDK 12.8.0 och senare versioner Använda Python för att hantera ACL:er i Azure Data Lake Storage Gen2
JavaScript SDK 12.11.0-beta.1 och senare versioner Använda JavaScript SDK i Node.js för att hantera ACL:er i Azure Data Lake Storage Gen2
HDFS CLI 3.3.3 och senare versioner Använda HDFS CLI med Data Lake Storage Gen2 och Apache Hadoop 3.3.3 – HDFS-behörighetsguide

Här är ett exempel på hur du inaktiverar/aktiverar den klibbiga bitinställningen med Azure CLI.

  1. Logga in på Azure Portal med ditt konto som har rolltilldelningen Storage Blob Data Owner på mål-ADLS Gen2-lagringskontot.

  2. Välj Cloud Shell från Azure Portal.

    Skärmbild av Cloud Shell-knappen i Azure Portal.

  3. Använd följande kommando för att ange ACL-behörigheterna och den klibbiga bitinställningen för container-/mappkatalogen till behörigheterna "rwxrwxrwt" och för att aktivera fästbiten:

    az storage fs access set --permissions rwxrwxrwt -p folder -f container --account-name account --auth-mode login
    

    Om du vill ändra inställningen för rotkatalogen, som är ACL på containernivå och inställningen för fästbit, använder du följande kommando:

    az storage fs access set --permissions rwxrwxrwt -p / -f container --account-name account --auth-mode login
    

    I {permission notation} föregående kommando kan acceptera både långa och korta noteringar. Det innebär att följande kommando också är kvalificerat:

    az storage fs access set --permissions 1776 -p folder -f container --account-name account --auth-mode login
    

    Här är ett exempel på utdata:

    Skärmbild av kommandoutdataexemplet.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.