chmod | |
---|---|
Tip de | program pentru a schimba permisiunile pentru fișiere și directoare |
Dezvoltator | Proiectul GNU |
Scris in | C |
Sistem de operare | asemănător Unix-ului |
Prima editie | 3 noiembrie 1971 |
ultima versiune | 8.5 (23 aprilie 2010) |
Licență | GPLv3+ |
Site-ul web | gnu.org |
chmod (din limba engleză change mode ) este o comandă pentru modificarea permisiunilor de fișiere și directoare utilizate în sistemele de operare asemănătoare Unix . Inclus în standardul POSIX , în Coreutils .
Sintaxă:
chmod [opțiuni] mod[,mod] fișier1 [fișier2 ...]Opțiuni:
Comanda nu modifică niciodată permisiunile pentru legăturile simbolice ; totuși, pentru fiecare legătură simbolică specificată pe linia de comandă, modifică permisiunile fișierului asociat. Comanda ignoră legăturile simbolice întâlnite în timpul procesării recursive a directoarelor.
Argumentul de permisiuni la comanda chmod poate fi scris în două formate: numeric și caracter.
Drepturile sunt scrise pe un rând pentru trei tipuri de utilizatori simultan:
În formă numerică, drepturile absolute sunt setate pentru un fișier sau director, în timp ce în formă simbolică, drepturile individuale pot fi setate pentru diferite tipuri de utilizatori.
Exemplu: numeric, setați permisiunile la rwxr-xr-x:
nume de fișier chmod 755
proprietar | grup | odihnă | |
---|---|---|---|
valoare octală | 7 | 5 | 5 |
notația caracterelor | rwx | rx | rx |
desemnarea tipului de utilizator | u | g | o |
Astfel, drepturile „755” sunt scrise în formă simbolică ca „rwxr-xr-x”. În același timp, pentru a înțelege esența stabilirii drepturilor în sistemele Unix, este util să cunoaștem reprezentarea numerelor în sistemul numeric binar .
binar | octal | simbolic | permisiuni pentru fișiere | drepturi de director |
---|---|---|---|---|
000 | 0 | --- | Nu | Nu |
001 | unu | --X | performanţă | citirea proprietăților fișierului |
010 | 2 | -w- | record | Nu |
011 | 3 | -wx | inregistrare si executie | totul, cu excepția obținerii numelor de fișiere |
100 | patru | r-- | citind | citirea numelor de fișiere |
101 | 5 | rx | citirea și executarea | acces de citire la fișiere/proprietățile acestora |
110 | 6 | rw- | Citeste si scrie | citirea numelor de fișiere |
111 | 7 | rwx | toate drepturile | toate drepturile |
Unele permisiuni au sens numai în combinație cu altele. Din primele patru elemente (care nu dau dreptul de a citi fișierul), doar „---” este folosit de obicei pentru fișiere, adică o refuz complet de acces la fișier pentru acest tip de utilizator. Pentru directoarele din întreaga listă, de obicei sunt folosite doar 0, 5 și 7 - deny, read and execute și acces complet.
Însumând aceste coduri pentru trei tipuri de utilizatori, puteți obține o intrare numerică sau simbolică. De exemplu, chmod 444 {filename} : 400+40+4=444 - toată lumea are acces numai în citire (identic cu „r--r--r--”).
În plus față de permisiunile standard „rwx”, comanda chmod controlează, de asemenea, biții SGID, SUID și T. Dacă atributele SUID sau SGID sunt setate, fișierul poate fi rulat cu permisiuni de proprietar sau grup, respectiv.
Pentru SUID, greutatea este 4000, iar pentru SGID, este 2000. Aceste atribute sunt semnificative atunci când bitul de execuție corespunzător este setat și sunt notate cu litera „s” în notație simbolică: „rw s rwxrwx” și „rwxrw s rwx ”, respectiv.
Exemplu: chmod 4555 {filename} - toată lumea are dreptul de a citi și de a executa, dar fișierul va fi lansat pentru executare cu drepturi de proprietar.
Setarea SGID pentru un director va face ca fiecare fișier nou creat să aparțină aceluiași grup ca directorul însuși, mai degrabă decât grupului principal al proprietarului, așa cum se întâmplă în mod implicit. SUID pentru un director nu are sens [1] .
sticky bit sau steag de ștergere restricționată (t-bit) este folosit doar cu directoare. Când bitul t pentru un director nu este setat, un fișier din acel director poate fi șters (redenumit) de către orice utilizator cu acces de scriere la acel director. Setând t-bit pe un director, schimbăm această regulă în așa fel încât numai proprietarul acestui fișier să poată șterge (redenumi) un fișier. În urma codificării de mai sus, t-bitul are o greutate de 1000.
Notă: Permisiunea de scriere (w) oferă utilizatorului posibilitatea de a scrie sau modifica un fișier, în timp ce permisiunea de scriere a directorului oferă posibilitatea de a crea fișiere noi sau de a șterge fișiere din acel director. Dacă un director poate fi scris (w), atunci un fișier din acel director poate fi șters chiar dacă fișierul nu are permisiunea de scriere . (Conform conceptului de sistem de fișiere POSIX).
În formă simbolică, utilizarea comenzii vă permite să adăugați, să setați sau să eliminați mai flexibil permisiuni pentru fișiere sau directoare:
$ chmod [referințe][operator][moduri] fișier...Referințele definesc utilizatorii ale căror drepturi vor fi modificate. Referințele sunt definite de una sau mai multe litere:
referinţă | clasă | Descriere |
---|---|---|
u | utilizator | Proprietarul fișierului |
g | grup | Utilizatori din grupul de proprietari de fișiere |
o | alții | Alți utilizatori |
A | toate | Toți utilizatorii (sau ugo) |
Operatorul definește operația pe care o va efectua chmod:
operator | Descriere |
---|---|
+ | adăugați anumite permisiuni |
- | elimina anumite drepturi |
= | setați anumite permisiuni |
Modurile definesc ce permisiuni vor fi setate, adăugate sau eliminate:
modul | Nume | Descriere |
---|---|---|
r | citit | citirea conținutului unui fișier sau director |
w | scrie | scrierea într-un fișier sau director |
X | a executa | executarea unui fișier sau citirea conținutului unui director |
X | execuție specială | executați dacă fișierul este un director sau are deja permisiunea de execuție pentru un utilizator |
s | setuid/gid | atributele setate SUID sau SGID vă permit să rulați fișierul pentru execuție cu drepturile proprietarului sau grupului fișierului, respectiv |
t | lipicios | setând t-bit pe un director, schimbăm această regulă în așa fel încât doar proprietarul acestui fișier să poată șterge un fișier |
Setați permisiunile „rwxr-xr-x” (0755) pentru un fișier:
chmod u=rwx,g=rx,o=rx nume de fișierSetați permisiunile de execuție pentru proprietarul fișierului, eliminați permisiunile de execuție din grup, eliminați permisiunile de scriere și executare de la alți utilizatori:
chmod u+x,gx,o-wx nume de fișierSetați permisiunile de citire recursive pentru toți utilizatorii:
directorul chmod -R a+rEliminați recursiv atributele SUID și SGID:
directorul chmod -R us,gsValorile implicite sunt:
Valorile sunt diferite pentru fișiere și directoare, deoarece indicatorul „execută” afectează fișierele și directoarele în mod diferit. Pentru fișierele executabile, „executarea” înseamnă rularea acestora, pentru directoare, dreptul de a citi fișierul (dacă există un drept de citire pe el) și atributele acestuia cu un nume cunoscut (fără dreptul de a citi, nu puteți obține numele fișierelor din director).
Următoarea comandă va aplica în mod recursiv reguli tuturor fișierelor din directorul „/home/test”, precum și tuturor fișierelor din toate subdirectoarele:
# find /home/test -type f -exec chmod 644 {} \;Următoarea comandă va aplica în mod recursiv reguli tuturor directoarelor din directorul „/home/test”, precum și tuturor directoarelor din toate subdirectoarele:
# find /home/test -type d -exec chmod 755 {} \;Puteți obține același rezultat fără a utiliza find (rețineți X majusculă):
# chmod -R go=rX,u=rwX /home/testComenzi Unix | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
|