Android

Chmod-kommando i Linux (filtillstånd)

Linux команда chmod - команда изменения прав доступа.

Linux команда chmod - команда изменения прав доступа.

Innehållsförteckning:

Anonim

I Linux hanteras åtkomst till filerna genom filbehörigheter, attribut och äganderätt. Detta säkerställer att endast godkända användare och processer kan komma åt filer och kataloger.

Den här handboken beskriver hur du använder chmod kommandot för att ändra åtkomstbehörigheter för filer och kataloger.

Linux-filtillstånd

Innan vi går vidare, låt oss förklara den grundläggande Linux-behörighetsmodellen.

I Linux är varje fil associerad med en ägare och en grupp och tilldelas behörighetsbehörighet för tre olika klasser av användare:

  • Filägaren. Gruppmedlemmarna. Övriga (alla andra).

Filägande kan ändras med chown och chgrp kommandona.

Det finns tre filtillståndstyper som gäller för varje klass:

  • Lästillståndet. Skrivtillståndet. Utför tillståndet.

Med detta koncept kan du ange vilka användare som får läsa filen, skriva till filen eller köra filen.

Filbehörigheter kan visas med kommandot ls :

ls -l filename.txt

-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |- | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type

Det första tecknet visar filtypen. Det kan vara en vanlig fil ( - ), katalog ( d ), en symbolisk länk ( l ) eller någon annan speciell filtyp.

De nästa nio tecknen representerar filbehörigheterna, tre tripletter om tre tecken vardera. Den första tripletten visar ägarbehörigheterna, den andra gruppbehörigheterna, och den sista tripletten visar alla andra behörigheter. Behörigheterna kan ha en annan betydelse beroende på filtyp.

I exemplet ovan ( rw-r--r-- ) betyder att rw-r--r-- har läs- och rw- ( rw- ), gruppen och andra har bara r-- ( r-- ).

Var och en av de tre tillåtelsetripletterna kan konstrueras av följande tecken och har olika effekter, beroende på om de är inställda på en fil eller i en katalog:

Effekten av behörigheter på filer

Lov Karaktär Betydelse på fil
Läsa - Filen är inte läsbar. Du kan inte visa filinnehållet.
r Filen är läsbar.
Skriva - Filen kan inte ändras eller ändras.
w Filen kan ändras eller ändras.
Kör - Filen kan inte köras.
x Filen kan köras.
s Om den finns i user ställer den setuid biten in. Om den finns i grupptripletten ställer den in setgid biten. Det betyder också att x flaggan är inställd.

När setuid eller setgid flaggorna är inställda på en körbar fil körs filen med filens ägare och / eller gruppbehörighet.

S Samma som s men x flaggan är inte inställd. Denna flagga används sällan i filer.
t Om den finns i den others tripletten sätter den den sticky biten.

Det betyder också att x flaggan är inställd. Denna flagga är värdelös för filer.

T Samma som t men x flaggan är inte inställd. Denna flagga är värdelös för filer.

Effekten av tillstånd på kataloger (mappar)

I Linux är kataloger specialtyper av filer som innehåller andra filer och kataloger.

Lov Karaktär Betydelse i katalogen
Läsa - Katalogens innehåll kan inte visas.
r Katalogens innehåll kan visas.

(t.ex. kan du lista filer i katalogen med ls .)

Skriva - Katalogens innehåll kan inte ändras.
w Katalogens innehåll kan ändras.

(t.ex. du kan inte skapa nya filer, ta bort filer.. osv.)

Kör - Katalogen kan inte ändras till.
x Katalogen kan navigeras med cd .
s Om den finns i user tripletten, ställer den setuid biten. Om den finns i grupptripletten ställer den in setgid biten. Det betyder också att x flaggan är inställd. När setgid flaggan är inställd på en katalog ärver de nya filerna som skapats i den kataloggrupp-ID (GID) i stället för det primära grupp-ID för användaren som skapade filen.

setuid har ingen effekt på kataloger.

S Samma som s men x flaggan är inte inställd. Denna flagga är värdelös i kataloger.
t Om den finns i den others tripletten sätter den den sticky biten.

Det betyder också att x flaggan är inställd. När den klibbiga biten är inställd på en katalog kan bara filens ägare, katalogens ägare eller administrativa användare radera eller byta namn på filerna i katalogen.

T Samma som t men x flaggan är inte inställd. Denna flagga är värdelös i kataloger.

Med hjälp av chmod

Kommandot chmod har följande allmänna form:

chmod MODE FILE…

Med chmod kommandot kan du ändra behörigheterna för en fil med antingen ett symboliskt eller numeriskt läge eller en referensfil. Vi förklarar lägena mer i detalj senare. Kommandot kan acceptera en eller flera filer och / eller kataloger separerade med utrymme som argument.

Endast root, filägaren eller användaren med sudo-behörigheter kan ändra behörigheterna för en fil. Var extra försiktig när du använder chmod , särskilt när du rekursivt ändrar behörigheterna.

Symbolisk (text) metod

Syntaxen för chmod kommandot när du använder symbolläget har följande format:

chmod perms… FILE…

Den första uppsättningen flaggor ( ), användares flaggor, definierar vilka användare som klassificerar behörigheterna för filen.

  • u - Filägaren. g - Användarna som är medlemmar i gruppen. o - Alla andra användare. a - Alla användare, identiska med ugo .

Om användarnas flagga utelämnas är standardfilen a och behörigheterna som är inställda av umask påverkas inte.

Den andra uppsättningen flaggor ( ), operationens flaggor, definierar om behörigheterna ska tas bort, läggas till eller ställas in:

  • - Tar bort de angivna behörigheterna. + Lägger till angivna behörigheter. = Ändrar de aktuella behörigheterna till de angivna behörigheterna. Om inga behörigheter anges efter symbolen = tas alla behörigheter från den angivna användarklassen bort.

Behörigheterna ( perms… ) kan uttryckligen ställas in med antingen noll eller en eller flera av följande bokstäver: r , w , x , X , s och t . Använd en enda bokstav från uppsättningen u , g och o när du kopierar behörigheter från en till en annan användarklass.

När du ställer tillstånd för mer än en användarklasser ( ), använd kommatecken (utan mellanslag) för att separera de symboliska lägena.

Nedan följer några exempel på hur du använder chmod kommandot i symboliskt läge:

  • Ge medlemmarna i gruppen tillåtelse att läsa filen, men inte att skriva och köra den:

    chmod g=r filename

    Ta bort exekveringsbehörighet för alla användare:

    chmod ax filename

    Ta bort övertygande skrivtillståndet för andra användare:

    chmod -R ow dirname

    Ta bort läs, skriv och kör tillstånd för alla användare utom filens ägare:

    chmod og-rwx filename

    Samma sak kan också uppnås genom att använda följande form:

    chmod og= filename

    Ge läs, skriva och köra behörighet till filens ägare, läsa behörigheter för filens grupp och inga behörigheter för alla andra användare:

    chmod u=rwx, g=r, o= filename

    Lägg till filens ägarbehörigheter till behörigheterna som medlemmarna i filgruppen har:

    chmod g+u filename

    Lägg till en klibbig bit i en given katalog:

    chmod o+t dirname

Numerisk metod

Syntaxen för kommandot chmod när du använder en numerisk metod har följande format:

chmod NUMBER FILE…

När du använder det numeriska läget kan du ställa in behörigheterna för alla tre användarklasser (ägare, grupp och alla andra) på samma gång.

NUMBER kan vara ett 3 eller 4-siffrigt nummer.

När tre siffror används används representerar den första siffran behörigheterna för filens ägare, den andra i filgruppen och den sista alla andra användare.

Varje skriv-, läs- och exekveringsbehörighet har följande siffervärde:

  • r (läs) = 4 w (skriv) = 2 x (kör) = 1 ingen behörigheter = 0

Behörighetsnumret för en specifik användarklass representeras av summan av värdena för behörigheterna för den gruppen.

För att ta reda på filens behörigheter i numeriskt läge beräknar du bara summan för alla användarklasser. Till exempel för att ge läs, skriva och köra behörighet till filens ägare, läsa och köra behörigheter till filens grupp och bara läsa behörigheter till alla andra användare gör du följande:

  • Ägare: rwx = 4 + 2 + 1 = 7Grupp: rx = 4 + 0 + 1 = 5Andrar: rx = 4 + 0 + 0 = 4

Med metoden ovan kommer vi upp till numret 754 , som representerar önskade behörigheter.

För att ställa in setuid , setgid och sticky bit bitflaggor använder du fyra siffror.

När de fyra siffrorna används, har den första siffran följande betydelse:

  • setuid = 4setgid = 2sticky = 1 ingen förändring = 0

De följande tre siffrorna har samma betydelse som när du använder 3 siffror.

Om den första siffran är 0 kan den utelämnas och läget kan representeras med 3 siffror. Det numeriska läget 0755 är detsamma som 755 .

För att beräkna det numeriska läget kan du också använda en annan metod (binär metod), men det är lite mer komplicerat. Att veta hur man beräknar det numeriska läget med 4, 2 och 1 räcker för de flesta användare.

Du kan kontrollera filens behörigheter i den numeriska notationen med kommandot stat :

stat -c "%a" filename

644

Här är några exempel på hur du använder chmod kommandot i numeriskt läge:

  • Ge filens ägare läs- och skrivbehörigheter och läs bara behörigheter för gruppmedlemmar och alla andra användare:

    chmod 644 dirname

    Ge filens ägare läsa, skriva och köra behörigheter, läsa och köra behörigheter till gruppmedlemmar och inga behörigheter för alla andra användare:

    chmod 750 dirname

    Ge läs, skriva och utföra behörigheter och en klibbig bit till en given katalog:

    chmod 1777 dirname

    Ställ in rekursivt läs-, skriv- och körrättigheter för filägaren och inga behörigheter för alla andra användare i en viss katalog:

    chmod -R 700 dirname

Använda en referensfil

--reference=ref_file låter dig ställa in filens behörigheter till att vara samma som för den angivna referensfilen ( ref_file ).

chmod --reference=REF_FILE FILE

Till exempel tilldelar följande kommando behörigheterna för file1 till file2

chmod --reference=file1 file2

Ändra rekursivt filens behörigheter

För att rekursivt använda alla filer och kataloger under den givna katalogen använder --recursive alternativet -R (- --recursive ):

chmod -R MODE DIRECTORY

För att t.ex. ändra behörigheterna för alla filer och underkataloger under katalogen /var/www till 755 skulle du använda:

chmod -R 755 /var/www

Arbetar med symboliska länkar

Symboliska länkar har alltid 777 behörigheter.

Som standard kommer chmod att ändra behörigheterna för filen som länken pekar på när du ändrar symlinks behörigheter.

chmod 755 symlink

Chansen är stor att i stället för att ändra målägarskapet får du ett "inte åtkomst till" symlink ": Tillstånd nekad" -fel.

Felet inträffar på grund av att de flesta Linux-distributioner är symlänkar skyddade och du kan inte använda målfiler. Det här alternativet anges i /proc/sys/fs/protected_symlinks . 1 betyder aktiverat och 0 inaktiverat. Det rekommenderas att inte inaktivera symlink-skyddet.

Ändra filtillstånd i bulk

Ibland finns det situationer där du skulle behöva bulkändra filer och katalogbehörigheter.

Det vanligaste scenariot är att rekursivt ändra webbplatsfilens behörigheter till 644 och katalogens behörigheter till 755 .

Med den numeriska metoden:

find /var/www/my_website -type d -exec chmod 755 {} ; find /var/www/my_website -type f -exec chmod 644 {} ;

Med hjälp av den symboliska metoden:

find /var/www/my_website -type d -exec chmod u=rwx, go=rx {} ; find /var/www/my_website -type f -exec chmod u=rw, go=r {} ;

Sökkommandot söker efter filer och kataloger under /var/www/my_website och /var/www/my_website varje hittad fil och katalog till chmod kommandot för att ställa in behörigheterna.

Slutsats

chmod kommandot ändrar filens behörigheter. Behörigheterna kan ställas in antingen i symboliskt eller numeriskt läge.

För att lära dig mer om chmod besöker du chmod man-sidan.

chmod terminal