Chmod

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 8 augusti 2021; verifiering kräver 1 redigering .

chmod
Sorts program för att ändra behörigheter för filer och kataloger
Utvecklaren GNU-projekt
Skrivet i C
Operativ system Unix-liknande
Första upplagan 3 november 1971
senaste versionen 8,5 (23 april 2010)
Licens GPLv3+
Hemsida gnu.org

chmod (från engelska  change mode ) är ett kommando för att ändra fil- och katalogbehörigheter som används i Unix-liknande operativsystem . Ingår i POSIX -standarden , i Coreutils .

Syntax:

chmod [alternativ] läge[,läge] fil1 [fil2 ...]

Alternativ:

Kommandot ändrar aldrig behörigheter på symboliska länkar ; Men för varje symbolisk länk som anges på kommandoraden ändras behörigheterna för den associerade filen. Kommandot ignorerar symboliska länkar som påträffas under rekursiv bearbetning av kataloger.

Behörighetsargumentet till kommandot chmod kan skrivas i två format: numeriskt och tecken.

Talformat

Rättigheterna skrivs på en rad för tre typer av användare samtidigt:

I numerisk form sätts absoluta rättigheter för en fil eller katalog, medan i symbolisk form kan individuella rättigheter ställas in för olika typer av användare.

Exempel: numeriskt, ställ in behörigheter till rwxr-xr-x:

chmod 755 filnamn

Exempel - värdet på rätt "755"
ägare Grupp resten
oktalt värde 7 5 5
teckennotation rwx rx rx
användartypsbeteckning u g o

Således skrivs rättigheterna "755" i symbolisk form som "rwxr-xr-x". Samtidigt, för att förstå essensen av att sätta rättigheter i Unix-system, är det användbart att känna till representationen av tal i det binära talsystemet .

Tre alternativ för att skriva användarrättigheter
binär oktal symbolisk filbehörigheter katalogrättigheter
000 0 --- Nej Nej
001 ett --x prestanda läsa filegenskaper
010 2 -w- inträde Nej
011 3 -wx inspelning och utförande allt utom att få filnamn
100 fyra r-- läsning läsa filnamn
101 5 rx läsa och utföra läsbehörighet till filer/deras egenskaper
110 6 rw- Läsa och skriva läsa filnamn
111 7 rwx alla rättigheter alla rättigheter

Vissa behörigheter är bara vettiga i kombination med andra. Av de fyra första objekten (som inte ger rätt att läsa filen) används vanligtvis bara "---" för filer, det vill säga ett fullständigt nekande av åtkomst till filen för denna typ av användare. För kataloger från hela listan används vanligtvis bara 0, 5 och 7 - neka, läs och kör, och full åtkomst.

Genom att summera dessa koder för tre typer av användare kan du få en numerisk eller symbolisk post. Till exempel, chmod 444 {filnamn} : 400+40+4=444 - alla har skrivskyddad åtkomst (identiskt med "r--r--r--").

Utöver de vanliga "rwx"-behörigheterna styr chmod-kommandot även bitarna SGID, SUID och T. Om SUID- eller SGID-attributen är inställda kan filen köras med filägare- respektive gruppbehörighet.

För SUID är vikten 4000 och för SGID är den 2000. Dessa attribut är meningsfulla när motsvarande exekveringsbit är inställd och betecknas med bokstaven "s" i symbolisk notation: "rw s rwxrwx" och "rwxrw s rwx ”, respektive.

Exempel: chmod 4555 {filnamn}  - alla har rätt att läsa och köra, men filen kommer att startas för körning med ägarrättigheter.

Om du ställer in SGID för en katalog kommer varje ny fil som skapas att tillhöra samma grupp som själva katalogen, snarare än ägarens primära grupp, vilket sker som standard. SUID för en katalog är meningslös [1] .

sticky bit eller begränsad raderingsflagga (t-bit) används endast med kataloger. När t-biten för en katalog inte är inställd, kan en fil i den katalogen raderas (döpas om) av alla användare med skrivåtkomst till den katalogen. Genom att sätta t-biten på en katalog ändrar vi denna regel på ett sådant sätt att endast ägaren till denna fil kan ta bort (byta namn på) en fil. Efter kodningen ovan har t-biten en vikt på 1000.

Obs: Skrivbehörighet (w) ger användaren möjlighet att skriva eller ändra en fil, medan katalogskrivbehörighet ger möjlighet att skapa nya filer eller ta bort filer från den katalogen. Om en katalog är skrivbar (w), kan en fil i den katalogen raderas även om filen inte har någon skrivbehörighet . (Enligt POSIX-filsystemkonceptet).

Populära betydelser

400 (-r--------) Ägaren har rätt att läsa; ingen annan har rätt att göra någonting 440 (-r--r-----) Ägare och grupp har läsbehörighet; ingen annan har rätt att göra någonting 644 (-rw-r--r--) Alla användare har läsbehörighet; ägaren kan redigera 660 (-rw-rw----) Ägare och grupp kan läsa och redigera; resten får inte utföra någon åtgärd 664 (-rw-rw-r--) Alla användare har läsbehörighet; ägare och grupp kan redigera 666 (-rw-rw-rw-) Alla användare kan läsa och redigera 700 (-rwx------) Ägaren kan läsa, skriva och utföra; ingen annan har rätt att göra någonting 744 (-rwxr--r--) Varje användare kan läsa, ägaren har rätt att redigera och utföra 755 (-rwxr-xr-x) Varje användare har rätt att läsa och köra; ägaren kan redigera 777 (-rwxrwxrwx) Varje användare kan läsa, redigera och köra 2555 (-r-xr-sr-x) Varje användare har rätt att läsa och köra med rättigheterna för användargruppen för filens ägare 4555 (-r-sr-xr-x) Varje användare har rätt att läsa och köra med rättigheterna för ägaren av filen

Teckenformat

I symbolisk form kan du använda kommandot för att mer flexibelt lägga till, ställa in eller ta bort behörigheter för filer eller kataloger:

$ chmod [referenser][operatör][lägen] fil ...

Referenser definierar de användare vars rättigheter kommer att ändras. Referenser definieras av en eller flera bokstäver:

Referens klass Beskrivning
u användare Filägare
g grupp Användare i filägargruppen
o andra Andra användare
a Allt Alla användare (eller ugo)

Operatören definierar operationen som chmod ska utföra:

operatör Beskrivning
+ lägga till vissa behörigheter
- ta bort vissa rättigheter
= ange vissa behörigheter

Lägen definierar vilka behörigheter som kommer att ställas in, läggas till eller tas bort:

läge namn Beskrivning
r läsa läsa en fil eller kataloginnehåll
w skriva skriva till en fil eller katalog
x Kör exekvera en fil eller läsa innehållet i en katalog
X specialutförande exekvera om filen är en katalog eller redan har exekveringsbehörighet för någon användare
s setuid/gid de inställda attributen SUID eller SGID låter dig köra filen för exekvering med rättigheterna för filägaren respektive gruppen
t klibbig genom att ställa in t-biten på en katalog ändrar vi denna regel på ett sådant sätt att endast ägaren till denna fil kan ta bort en fil

Exempel

Ange behörigheter "rwxr-xr-x" (0755) för en fil:

chmod u=rwx,g=rx,o=rx filnamn

Ställ in exekveringsbehörigheter för filägaren, ta bort exekveringsbehörigheter från gruppen, ta bort skriv- och exekveringsbehörigheter från andra användare:

chmod u+x,gx,o-wx filnamn

Ställ in rekursivt läsbehörigheter för alla användare:

chmod -R a+r katalog

Ta rekursivt bort SUID- och SGID-attributen:

chmod -R us,gs katalog

Funktioner

Standardvärdena är:

Värdena är olika för filer och kataloger eftersom "execute"-flaggan påverkar filer och kataloger på olika sätt. För körbara filer betyder "execute" att köra dem, för kataloger, rätten att läsa filen (om det finns en läsrätt på den) och dess filattribut med ett känt namn (utan rättighet att läsa kan du inte få namnet på filerna i katalogen).

Följande kommando kommer rekursivt att tillämpa regler på alla filer i "/home/test"-katalogen, såväl som på alla filer i alla underkataloger:

# hitta /home/test -typ f -exec chmod 644 {} \;

Följande kommando kommer rekursivt att tillämpa regler på alla kataloger i "/home/test"-katalogen, såväl som på alla kataloger i alla underkataloger:

# hitta /home/test -typ d -exec chmod 755 {} \;

Du kan uppnå samma resultat utan att använda hitta (notera det stora X):

# chmod -R go=rX,u=rwX /home/test

Anteckningar

  1. Scott Granneman "Linux Pocket Guide", Williams Publishing House, 2007

Länkar