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.
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
ä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 .
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).
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 |
Ange behörigheter "rwxr-xr-x" (0755) för en fil:
chmod u=rwx,g=rx,o=rx filnamnStä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 filnamnStäll in rekursivt läsbehörigheter för alla användare:
chmod -R a+r katalogTa rekursivt bort SUID- och SGID-attributen:
chmod -R us,gs katalogStandardvä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/testUnix-kommandon | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
|