Chmod

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 8 august 2021; verificarea necesită 1 editare .

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.

Formatul numărului

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

Exemplu - valoarea dreptului „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 .

Trei opțiuni pentru scrierea drepturilor de utilizator
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).

Semnificații populare

400 (-r--------) Proprietarul are dreptul de a citi; nimeni altcineva nu are dreptul de a face nimic 440 (-r--r-----) Proprietarul și grupul au acces la citire; nimeni altcineva nu are dreptul de a face nimic 644 (-rw-r--r--) Toți utilizatorii au acces de citire; proprietarul poate edita 660 (-rw-rw----) Proprietarul și grupul pot citi și edita; restul nu au voie să efectueze nicio acțiune 664 (-rw-rw-r--) Toți utilizatorii au acces de citire; proprietarul și grupul pot edita 666 (-rw-rw-rw-) Toți utilizatorii pot citi și edita 700 (-rwx------) Proprietarul poate citi, scrie și executa; nimeni altcineva nu are dreptul de a face nimic 744 (-rwxr--r--) Fiecare utilizator poate citi, proprietarul are dreptul de a edita și executa 755 (-rwxr-xr-x) Fiecare utilizator are dreptul de a citi și de a executa; proprietarul poate edita 777 (-rwxrwxrwx) Fiecare utilizator poate citi, edita și executa 2555 (-r-xr-sr-x) Fiecare utilizator are dreptul de a citi și de a executa cu drepturile grupului de utilizatori al proprietarului fișierului 4555 (-r-sr-xr-x) Fiecare utilizator are dreptul de a citi și de a executa cu drepturile proprietarului fișierului

Format de caractere

Î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

Exemple

Setați permisiunile „rwxr-xr-x” (0755) pentru un fișier:

chmod u=rwx,g=rx,o=rx nume de fișier

Setaț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șier

Setați permisiunile de citire recursive pentru toți utilizatorii:

directorul chmod -R a+r

Eliminați recursiv atributele SUID și SGID:

directorul chmod -R us,gs

Caracteristici

Valorile 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/test

Note

  1. Scott Granneman „Linux Pocket Guide”, Editura Williams, 2007

Link -uri