Vad är filtillstånd i Linux och hur ser jag till att mina är säkra?

0
153

I Linux avgör filbehörigheter nivåerna av behörighet för filägare och alla annan. Det är viktigt att se till att alla webbväntade filer har sina behörigheter rätt inställda, så att en komprometterad process inte kan skriva till platser där den inte borde.

Vad är filtillstånd?

Filbehörigheter spårar behörigheterna för tre olika grupper. Varje grupp representeras av tre bitar:

  • r: Läs ” tillstånd tillåter en process att läsa innehållet i den filen i minnet.
  • w: “ Skriv ” behörighet ger en processåtkomst för att skriva över den fysiska platsen på disken där filen är lagrad.
  • x: “ Execute ” behörighet är för program och gör att filen kan köras.

I terminalen visas behörigheter så här:

Den första “ d ” anger om filen är en katalog. Den första gruppen av tre är för filägaren. I det här fallet har filägaren fullständig läs-, skriv- och köråtkomst. Nästa grupp om tre är “ gruppägare, ” som anger åtkomsträttigheter för gruppen som filen tillhör, i detta fall skrivskyddad. Nästa grupp är alla andra, som är skrivskyddade.

I allmänhet är filer med öppna “ alla ” behörigheter är inte särskilt säkra. Du vill se till att den sista gruppen är skrivskyddad eller ingen åtkomst för de flesta filer.

Under huven lagras dessa i binär, varvid varje tillstånd representerar lite. Till exempel är rw- 110 i binär, vilket är 6 i decimal. Så behörighetssträngen:

rwxrw-r– Annonsering

… kan lagras som “ 764. ” Filbehörigheter kommer ofta att hänvisas till detta sätt; “ 777 ” betecknar full åtkomst, “ 700 ” är privat, “ 644 ” är skrivskyddad. Tekniskt sett kallas detta oktalt, inte decimal, eftersom det finns åtta möjliga värden för varje siffra.

För kataloger använder behörigheterna samma tecken, men är lite olika:

  • r: Listtillstånd. Tillåter att katalogen öppnas och tillåter användning av ls. Kräver x -attributet.
  • w: Skrivbehörighet. Gör det möjligt att skapa nya filer, radera filer och byta namn på filer. Förhindrar inte att ändra innehållet i befintliga skrivaktiverade filer i katalogen.
  • x: Enterability. Tillåter användning av cd. Detta är respekterat i hela systemet och förhindrar att mappen öppnas i en GUI -filutforskare.

På vissa system, särskilt macOS, kan det finnas en “@” efter filbehörighetssträngen. Det betyder att filen har utökade attribut, som du kan kontrollera med ls -l@. Till exempel tilldelas attributet com.apple.quarantine till körbara filer som ännu inte har öppnats, så att Gatekeeper kan blockera dig från att dubbelklicka på det, tvinga dig att högerklicka & gt; öppna och sedan onödigt uppmana dig om du verkligen är säker på att du vill öppna den.

Vad är filägare och grupper?

Filägaren är bara en viss användare, men användare i Unix -system fungerar inte på samma sätt som de gör i Windows. Unix kan ha olika användare för enskilda processer som mysql och nginx. Detta kan göra behörigheter mycket detaljerade; till exempel kan en instans av MySQL som körs under mysql -användaren komma åt sin egen databas, men nginx -användaren kan inte.

Användargrupper fungerar på ett liknande sätt men stöder att ha flera användare med samma behörigheter. Användare kan läggas till och tas bort från gruppen, och de är valfria för att ställa in filbehörigheter.

Så här kontrollerar du filtillstånd för kataloger

Du kan visa fil- och katalogbehörigheter genom att köra ls -l i din terminal. Filtillstånd visas längst till höger:

Annons

Om du vill visa filbehörigheterna för en specifik fil eller katalog måste du pipa ls -utmatningen till grep:

ls -la | grep filnamn

Observera att den aktuella mappen och den överordnade mappen har sina behörigheter som. och .. när du använder -a -flaggan. Men även detta visar bara två nivåer av behörigheter. För att visa behörigheter för varje överordnad mapp måste du använda kommandot namei:

namei -l `pwd`

Detta kommando kanske inte installeras på alla Linux -distributioner. På macOS måste du installera det från brygg.

För att söka efter enskilda filer i de mappar som kan ha felaktiga behörigheter kan du använda kommandot find med -permflaggan:

hitta ~ -type f -perm 777

Detta söker rekursivt och kan ta lite tid om du kör det i rotkatalogen.

Så här ändrar du filtillstånd och äganderätt

Att ändra filbehörigheter är enkelt med kommandot chmod:

chmod 700 filnamn

Du kan också lägga till behörigheter utan att ange en fullständig behörighetssträng. Detta är en genväg, men kan spara lite tid. Om du till exempel inte kan öppna en skriptfil kan du lägga till behörighet för ägaren att utföra med:

chmod u+x filnamn Annons

Detta lägger till execute (x) -behörigheten för den nuvarande ägaren (u, för “ user ”).

Ändra ägare fungerar på samma sätt med kommandot chown:

chown owner: group filename

The &#8220 ;: grupp ” är valfritt. Både chmod och chown kan köras rekursivt på kataloger, för att ändra filbehörigheter för allt inom dessa kataloger. För att göra detta, använd versalen -R -flaggan:

chmod 700 -R -katalogen

Du kan också använda chmod som alternativet -exec för att hitta, vilket gör att du kan ändra filbehörigheter i hela systemet. Till exempel kommer det här kommandot att hitta filer som har öppna skrivbehörigheter och ställa in dem som skrivskyddade:

find/-type f -perm 777 -print -exec chmod 744 {} ;