path resolution(7): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med '= path_resolution(7) - Hur ett filnamn löses till en fil = == Namn == path_resolution - hur ett filnamn löses till en fil == Beskrivning == Vissa UNIX/Linux-systemanrop tar ett eller flera filnamn som parametrar. Ett filnamn (eller sökväg) löses enligt följande: === Steg 1: Början av upplösningsprocessen === * Om sökvägen börjar med tecknet '''/''' startar uppslaget i rotkatalogen för den anropande processen. - En process ärver sin rotkatalog från sin...')
 
 
Rad 88: Rad 88:
<BR><BR>Tack till [https://pc-service.se PC Service] som har  sponsrat [https://www.linux.se Linux.se] med webbhotell.
<BR><BR>Tack till [https://pc-service.se PC Service] som har  sponsrat [https://www.linux.se Linux.se] med webbhotell.


[[Kategori:Standard C-biblioteket ]]
[[Kategori:Övrig Informationsmanual]]
[[Kategori:Linuxmanual]]

Nuvarande version från 23 november 2024 kl. 08.10

path_resolution(7) - Hur ett filnamn löses till en fil

Namn

path_resolution - hur ett filnamn löses till en fil

Beskrivning

Vissa UNIX/Linux-systemanrop tar ett eller flera filnamn som parametrar. Ett filnamn (eller sökväg) löses enligt följande:

Steg 1: Början av upplösningsprocessen

  • Om sökvägen börjar med tecknet / startar uppslaget i rotkatalogen för den anropande processen.
 - En process ärver sin rotkatalog från sin förälder. Vanligtvis är detta filhierarkins rotkatalog.
 - Rotkatalogen kan ändras med hjälp av systemanropet `chroot(2)` eller temporärt med `openat2(2)` och flaggan `RESOLVE_IN_ROOT`.
  • Om sökvägen inte börjar med /, är startkatalogen den aktuella arbetskatalogen för processen.
 - Den aktuella arbetskatalogen kan ändras med systemanropet `chdir(2)`.

Sökvägar som börjar med / kallas absoluta sökvägar. De som inte gör det kallas relativa sökvägar.

Steg 2: Gå igenom sökvägen

1. Sätt nuvarande uppslagskatalog till startkatalogen. 2. För varje icke-slutkomponent i sökvägen (delad av tecknet /):

  * Om processen inte har rättigheter till katalogen returneras EACCES ("Permission denied").
  * Om komponenten inte hittas returneras ENOENT ("No such file or directory").
  * Om komponenten inte är en katalog eller symbolisk länk returneras ENOTDIR ("Not a directory").
  * Om komponenten är en katalog, sätt nuvarande uppslagskatalog till den katalogen och gå till nästa komponent.
  * Om komponenten är en symbolisk länk:
    - Lös länken.
    - Om resultatet inte är en katalog returneras ENOTDIR.
    - Vid framgång sätts uppslagskatalogen till resultatet och processen fortsätter.
    • Begränsningar:**

För att skydda kärnan mot stacköverflöd finns gränser på maximalt antal symboliska länkar som kan följas: - Max 40 symboliska länkar. - Före Linux 2.6.18 var rekursionsgränsen 5, men höjdes till 8 i senare versioner. Från och med Linux 4.2 eliminerades rekursionen helt.

Symboliska länkar kan blockeras med `openat2(2)` och flaggan `RESOLVE_NO_SYMLINKS`.

Steg 3: Hitta sista komponenten

1. Uppslaget för den sista komponenten fungerar som för andra komponenter. 2. Den sista komponenten behöver inte vara en katalog. 3. Det är inte ett fel om komponenten inte hittas — vissa systemanrop kan skapa den.

. och ..

  • . refererar till katalogen själv.
  • .. refererar till föräldrakatalogen.

Man kan inte navigera förbi roten: /.. är samma som /.

Monteringspunkter

Efter ett kommando som mount dev path refererar path till roten för det monterade filsystemet. Det går dock att lämna ett monterat filsystem med path/...

Traversering av monteringspunkter kan blockeras med `openat2(2)` och flaggan `RESOLVE_NO_XDEV`.

Sökvägar som slutar med '/'

Om en sökväg slutar med /, måste komponenten före slashet lösas till en katalog.

Längdbegränsningar

Maximal längd för sökvägar beror på systemet. Om en sökväg är för lång returneras ENAMETOOLONG.

Tomma sökvägar

En tom sökväg returnerar enligt POSIX alltid ENOENT.

Rättigheter

Rättigheter för en fil definieras i tre grupper: 1. Ägare (UID) 2. Grupp (GID) 3. Övriga

Varje grupp har tre bitar för att ange rättigheter: läs, skriv och kör/sök. Linux använder fsuid och fsgid vid rättighetskontroll.

Superanvändare och kapabiliteter

Traditionellt kan superanvändaren (UID 0) ignorera alla rättighetskontroller. På Linux är dessa rättigheter uppdelade i kapabiliteter, där relevanta för filkontroller är: - `CAP_DAC_OVERRIDE`: Ignorerar rättighetskontroller (delvis). - `CAP_DAC_READ_SEARCH`: Tillåter läs- och sökoperationer.

Se också

Sidslut

Orginalhemsidan på Engelska :https://man7.org/linux/man-pages/man7/path_resolution.7.html


Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till PC Service som har sponsrat Linux.se med webbhotell.