Tillsammans med de vanliga läs-, skriv- och exekveringsbehörigheterna har Linux-filer en annan uppsättning attribut som styr andra egenskaper hos filen. Så här ser du dem och ändrar dem.
Behörigheter och attribut
I Linux kontrolleras vem som kan komma åt en fil och vad de kan göra med den av en användarcentrerad uppsättning behörigheter. Om du kan läsa innehållet i en fil, skriva ny data i filen eller köra en fil om det är ett skript eller ett program, styrs allt av den uppsättningen behörigheter. Behörigheterna tillämpas på filen, men de definierar begränsningarna och möjligheter för olika kategorier av användare.
Det finns behörigheter för ägaren av filen, för gruppen av filen och för andra— ;det vill säga användare som inte är i de två första kategorierna. Du kan använda kommandot ls med alternativet -l (lång lista) för att se behörigheterna för en fil eller katalog.
För att ändra behörigheterna använder du kommandot chmod. Åtminstone kan du det om du har skrivbehörigheter för filen, eller om du är root-användaren.
Annons
Vi kan se att filbehörigheter är användarcentrerade eftersom de ger eller ta bort behörigheter på användarnivå. Däremot är attributen till en fil filsystemcentrerade. Precis som behörigheter är de inställda på filen eller katalogen. Men när de väl är inställda är de samma för alla användare.
Attribut är en separat samling av inställningar från behörigheter. Attribut kontrollerar egenskaper som oföränderlighet och andra beteenden på filsystemnivå. För att se attributen för en fil eller katalog använder vi kommandot lsattr. För att ställa in attributen använder vi chattr-kommandot.
strong>Allt du någonsin velat veta om inoder på Linux
Behörigheter och attribut lagras i inoder. En inode är en filsystemstruktur som innehåller information om filsystemobjekt som filer och kataloger. En fils plats på hårddisken, dess skapandedatum, dess behörigheter och dess attribut lagras alla i dess inod.
Eftersom olika filsystem har olika underliggande strukturer och möjligheter, kan attribut bete sig annorlunda—eller helt ignoreras—av vissa filsystem. I den här artikeln använder vi ext4 som är standardfilsystemet för många Linux-distributioner.
Titta på en fil’s Attribut
Kommandona chattr och lsattr kommer redan att finnas på din dator så du behöver inte installera någonting.
För att kontrollera attributen på filerna i den aktuella katalogen , använd lsattr:
lsattr
De streckade linjerna är platshållare för attribut som inte är inställda. Det enda attributet som ställs in är attributet e (omfång). Detta visar att filsystemets inoder använder—eller kommer att använda om så krävs—omfattningar för att peka på alla delar av filen på hårddisken.
Annons
Om filen hålls i en sammanhängande sekvens av hårddiskblock, behöver dess inod bara registrera det första och sista blocket som används för att lagra filen. Om filen är fragmenterad måste inoden registrera numret på det första och sista blocket i varje del av filen. Dessa par av hårddiskblocknummer kallas utsträckningar.
Detta är listan över de mest använda attributen.
- a: Endast lägg till . En fil med detta attribut kan bara läggas till. Det kan fortfarande skrivas till, men bara i slutet av filen. Det är inte möjligt att skriva över någon av befintlig data i filen.
- c: Komprimerad. Filen komprimeras automatiskt på hårddisken och okomprimeras när den läses. Data som skrivs till filerna komprimeras innan de skrivs till hårddisken.
- S: Inga Atime-uppdateringar. Atime är ett värde i en inod som registrerar senaste gången en fil öppnades.
- C: Ingen kopiering-på-skriv. Om två processer begär åtkomst till en fil kan de ges pekare till samma fil. De får bara sin egen unika kopia av filen om de försöker skriva till filen, vilket gör den unik för den processen.
- d: Ingen soptipp. Linux dump kommandot används för att skriva kopior av hela filsystem till backup media. Detta attribut gör att dump ignorerar filen. Den är utesluten från säkerhetskopian.
- D: Synkrona kataloguppdateringar. När detta attribut är aktiverat för en katalog skrivs alla ändringar i den katalogen synkront—det vill säga omedelbart—på hårddisken. Dataoperationer kan buffras.
- e: Omfattningsformat. Attributet e indikerar att filsystemet använder utsträckningar för att kartlägga filens plats på hårddisken. Du kan inte ändra detta med chattr. Det är en funktion av filsystemets funktion.
- i: oföränderlig. En oföränderlig fil kan inte ändras, inklusive byta namn och radering. Rotanvändaren är den enda person som kan ställa in eller avaktivera detta attribut.
- s: Säker radering. När en fil med denna attributuppsättning raderas, skrivs hårddiskblocken som innehöll fildata över med bytes som innehåller nollor. Observera att detta inte uppfylls av ext4-filsystemet.
- S: Synkrona uppdateringar. Ändringar av en fil med dess S-attributuppsättning skrivs till filen synkront.
- u: Att ta bort en fil som har dess u-attributuppsättning gör att en kopia av filen görs . Detta kan vara fördelaktigt för filåterställning om filen togs bort av misstag.
Ändra en fils attribut
< p>Chattr-kommandot låter oss ändra attributen för en fil eller katalog. Vi kan använda operatorerna + (set) och – (unset) för att tillämpa eller ta bort ett attribut, liknande kommandot chmod och behörigheter.
Chattr-kommandot har också en = (endast set) operator. Detta ställer in attributen för en fil eller katalog till endast de attribut som anges i kommandot. Det vill säga, alla attribut som inte angivna på kommandoraden inte inställs.
Ställa in attributet Lägg endast till
Låt oss ställa in append-only-attributet på en textfil och se hur det påverkar vad vi kan göra med filen.
sudo chattr +a text-file.txt
Vi kan kontrollera att endast tilläggsbiten har ställts in genom att använda lsattr :
lsattr text -file.txt
Annons
Brevet “a” indikerar att attributet har ställts in. Låt oss försöka skriva över filen. Omdirigerar utdata till en fil med en enda vinkelparentes “>” ersätter allt innehåll i filen med den omdirigerade utdata.
Vi har förladdat textfilen med lite lorem ipsum platshållartext.
cat text-file.txt
Vi omdirigerar utdata från ls till filen:
ls -l > text-file.txt sudo ls -l > text-file.txt
Operationen är inte tillåten, även om vi använder kommandot sudo.
Om vi använder två vinkelparenteser “>>” för att omdirigera utdata läggs den till befintliga data i filen. Det borde vara acceptabelt för vår textfil som endast kan läggas till.
sudo ls -l >> text-file.txt
Vi återgår till kommandotolken utan några felmeddelanden. Låt oss kika in i filen för att se vad som har hänt.
cat text-file.txt
Den omdirigerade utdata från ls har lagts till i slutet av filen.
Annons
Även om vi kan lägga till data till filen, är den enda förändringen vi kan göra. Vi kan inte ta bort det och inte heller root.
rm text-file.txt sudo rm text-file.txt
Ställa in det oföränderliga attributet
Om du vill skydda en fil som aldrig kommer att läggas till nya data kan du ställa in det oföränderliga attributet. Detta förhindrar alla ändringar av filen, inklusive att lägga till data.
sudo chattr +i second-file.txt lsattr second-file.txt
Vi kan se “i” indikerar att det oföränderliga attributet har ställts in. Efter att ha gjort vår fil oföränderlig kan inte ens rotanvändaren byta namn på den (mv), ta bort den (rm) eller lägga till data till den.
sudo mv second-file.txt new-name.txt sudo rm second-file.txt sudo ls -l >> second-file.txt
Förlita dig inte på säker radering på ext4
Som vi påpekade stöder vissa operativsystem inte alla attribut. Attributet säker borttagning respekteras inte av ext-familjen av filsystem, inklusive ext4. Lita inte på detta för säker radering av filer.
Det är lätt att se att detta inte fungerar i ext4. Vi ställer in attributet s (säker radering) på en textfil.
sudo chattr +s third-file.txt
Vad vi ska göra är att ta reda på inoden som innehåller metadata om den här filen. Inoden innehåller det första hårddiskblocket som är upptaget av filen. Filen innehåller lite lorem ipsum platshållartext.
Annons
Vi läser det blocket direkt från hårddisken för att verifiera att vi läser rätt hårddiskplats. Vi tar bort filen och läser sedan samma hårda dykblock en gång till. Om attributet säker radering används, bör vi läsa nollställda bytes.
Vi kan hitta inoden för filen genom att använda kommandot hdparm med alternativet –fibmap (filblockskarta).
sudo hdparm –fibmap tredje fil.txtDet första hårddiskblocket är 18100656. Vi använder kommandot dd för att läs den.
Alternativen är:
- if=/dev/sda: Läs från den första hårddisken på den här datorn.
- bs=512: Använd en hårddiskblockstorlek på 512 byte.
- hoppa över=18100656: Hoppa över alla block före block 18100656 Med andra ord, börja läsa vid block 18100656.
- count=1: Läs ett datablock.
sudo dd if=/dev/sda bs=512 skip=18100656 count=1
Som förväntat ser vi lorem ipsum platshållartexten. Vi läser rätt block på hårddisken.
Nu tar vi bort filen.
rm third-file.txt
Om vi läser samma hårddiskblock kan vi fortfarande se data.
sudo dd if=/dev/sda bs=512 skip=18100656 count=1
Återigen, lita inte på detta för säker radering på ext4. Det finns bättre metoder tillgängliga för att radera filer så att de kan& #8217;inte återställas.
RELATERAT: Hur man säkert tar bort filer på Linux
Användbart, men använd med försiktighet
Att ställa in attributen för filer kan göra dem ogenomträngliga för oavsiktlig katastrof. Om du inte kan ta bort eller skriva över en fil är det ganska säkert.
Du kanske tror att du skulle vilja tillämpa dem på systemfiler och göra din Linux-installation säkrare. Men systemfiler måste bytas ut med jämna mellanrum när uppdateringar utfärdas eller uppgraderingar tillämpas. Av den anledningen är det säkrast att endast använda dessa attribut på filer som du har skapat.
RELATERAT: Så här säkrar du din Linux-server med fail2ban< /strong>
LÄS NÄSTA
- › Sony LinkBuds Review: A Hole New Idea
- › Roborock Q5+ Review: A Solid Self-Emptying Robot Vacuum
- › 13 viktiga Excel-funktioner för datainmatning
- › Så här lägger du till trådlös laddning till vilken telefon som helst
- › Du behöver inte Gigabit Internet, du behöver en bättre router
- › Har du en smart högtalare? Använd den för att göra dina brandvarnare smarta