Android

Comanda Chmod în linux (fișiere permisiuni)

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

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

Cuprins:

Anonim

În Linux, accesul la fișiere este gestionat prin permisiunile, atributele și proprietatea. Acest lucru asigură că numai utilizatorii și procesele autorizate pot accesa fișiere și directoare.

Acest tutorial acoperă modul de utilizare a comenzii chmod pentru a modifica permisiunile de acces ale fișierelor și directoarelor.

Permisiuni de fișiere Linux

Înainte de a merge mai departe, să explicăm modelul de permisiuni Linux de bază.

În Linux, fiecare fișier este asociat cu un proprietar și un grup și este atribuit cu drepturi de acces pentru permis pentru trei clase diferite de utilizatori:

  • Proprietarul fișierului. Membrii grupului. Alții (toți ceilalți).

Proprietatea fișierului poate fi modificată folosind comenzile chown și chgrp .

Există trei tipuri de permisiuni de fișiere care se aplică pentru fiecare clasă:

  • Permisiunea de citire. Autorizația de scriere. Autorizația de execuție.

Acest concept vă permite să specificați ce utilizatori au voie să citească fișierul, să scrie în fișier sau să execute fișierul.

Permisiunile fișierelor pot fi vizualizate folosind comanda 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

Primul caracter arată tipul fișierului. Poate fi un fișier obișnuit ( - ), director ( d ), o legătură simbolică ( l ) sau orice alt tip special de fișier.

Următoarele nouă caractere reprezintă permisiunile fișierului, trei triplete de trei caractere fiecare. Prima triplă arată permisiunile de proprietar, cea de-a doua grupă permisiunile, iar ultima triplă arată permisiunile tuturor celorlalți. Permisiunile pot avea o semnificație diferită în funcție de tipul de fișier.

În exemplul de mai sus ( rw-r--r-- ) înseamnă că proprietarul fișierului are permisiuni de citire și scriere ( rw- ), grupul și alții au permisiuni de citire ( r-- ).

Fiecare dintre cele trei triplete de permisiune poate fi construită din următoarele caractere și poate avea efecte diferite, în funcție de faptul că sunt setate la un fișier sau la un director:

Efectul permisiunilor asupra fișierelor

Permisiune Caracter Înțeles în fișier
Citit - Fișierul nu poate fi citit. Nu puteți vizualiza conținutul fișierului.
r Fișierul poate fi citit.
Scrie - Fișierul nu poate fi modificat sau modificat.
w Fișierul poate fi modificat sau modificat.
A executa - Fișierul nu poate fi executat.
x Fișierul poate fi executat.
s Dacă se găsește în triplul user , setează bitul setuid . Dacă se găsește în tripleta group , setează bitul setgid . De asemenea, înseamnă că x flag este setat.

Când stegulețele setuid sau setgid sunt setate pe un fișier executabil, fișierul este executat cu proprietarul și / sau privilegiile grupului.

S La fel ca s dar steagul x nu este setat. Acest steag este rar folosit pe fișiere.
t Dacă se găsește în others triplete, setează bitul sticky .

De asemenea, înseamnă că x flag este setat. Acest steag este inutil în fișiere.

T La fel ca t dar steagul x nu este setat. Acest steag este inutil în fișiere.

Efectul permisiunilor asupra directoarelor (dosare)

În Linux, Directorii sunt tipuri speciale de fișiere care conțin alte fișiere și directoare.

Permisiune Caracter Înțeles pe director
Citit - Conținutul directorului nu poate fi afișat.
r Conținutul directorului poate fi afișat.

(de ex., puteți lista fișierele din directorul cu ls .)

Scrie - Conținutul directorului nu poate fi modificat.
w Conținutul directorului poate fi modificat.

(de ex. nu puteți crea fișiere noi, șterge fișiere.. etc)

A executa - Directorul nu poate fi schimbat în.
x Directorul poate fi navigat folosind cd .
s Dacă se găsește în triplul user , setează bitul setuid . Dacă se găsește în triplul group , setează bitul setgid . De asemenea, înseamnă că x flag este setat. Când steagul setgid este setat pe un director, fișierele noi create în el moștenesc ID-ul grupului de directoare (GID), în loc de ID-ul de grup principal al utilizatorului care a creat fișierul.

setuid nu are efect asupra directoarelor.

S La fel ca s dar steagul x nu este setat. Acest steag este inutil în directoare.
t Dacă se găsește în others triplete, setează bitul sticky .

De asemenea, înseamnă că x flag este setat. Când bitul lipicios este setat pe un director, numai proprietarul fișierului, proprietarul directorului sau utilizatorul administrativ pot șterge sau redenumi fișierele din director.

T La fel ca t dar steagul x nu este setat. Acest steag este inutil în directoare.

Folosind chmod

Comanda chmod are următoarea formă generală:

chmod MODE FILE…

Comanda chmod vă permite să modificați permisiunile unui fișier folosind fie un mod simbolic sau numeric sau un fișier de referință. Vom explica mai detaliat modurile mai târziu. Comanda poate accepta unul sau mai multe fișiere și / sau directoare separate prin spațiu ca argumente.

Doar root, proprietarul fișierului sau utilizatorul cu privilegii sudo pot modifica permisiunile unui fișier. Fii mai atent când folosești chmod , în special când schimbi recursiv permisiunile.

Metoda simbolică (text)

Sintaxa comenzii chmod atunci când se utilizează modul simbolic are următorul format:

chmod perms… FILE…

Primul set de steaguri ( ), utilizatorii semnalizează, definește ce utilizatori clasifică permisiunile pentru fișier.

  • u - Proprietarul fișierului. g - Utilizatorii care sunt membri ai grupului. o - Toți ceilalți utilizatori. a - Toți utilizatorii, identici cu ugo .

Dacă este omis steagul utilizatorilor, cel implicit este a și permisiunile care sunt setate de umask nu sunt afectate.

Al doilea set de steaguri ( ), steagurile de operație, definește dacă autorizațiile trebuie eliminate, adăugate sau setate:

  • - Înlătură permisiunile specificate. + Adăuga permisiunile specificate. = Modifică permisiunile curente la permisiunile specificate. Dacă nu sunt specificate permisiuni după simbolul = , toate permisiunile din clasa de utilizator specificată sunt eliminate.

Permisiunile ( perms… ) pot fi setate explicit folosind fie zero, fie una sau mai multe din următoarele litere: r , w , x , X , s și t . Utilizați o singură literă din seturile u , g și o pentru a copia permisiunile de la o clasă la alta.

Când setați permisiunile pentru mai multe clase de utilizator ( ), utilizați virgule (fără spații) pentru a separa modurile simbolice.

Mai jos sunt câteva exemple despre cum se utilizează comanda chmod în modul simbolic:

  • Oferă membrilor grupului permisiunea de a citi fișierul, dar nu de a-l scrie și executa:

    chmod g=r filename

    Eliminați permisiunea de execuție pentru toți utilizatorii:

    chmod ax filename

    Înlăturați repulsiv permisiunea de scriere pentru alți utilizatori:

    chmod -R ow dirname

    Eliminați citirea, scrierea și executarea permisiunii pentru toți utilizatorii, cu excepția proprietarului fișierului:

    chmod og-rwx filename

    Același lucru poate fi realizat și folosind următorul formular:

    chmod og= filename

    Oferiți permisiunea de citire, scriere și execuție proprietarului fișierului, permisiunile de citire la grupul fișierului și nici permisiunile tuturor celorlalți utilizatori:

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

    Adăugați permisiunile de proprietar ale fișierului la permisiunile pe care membrii grupului de fișier le au:

    chmod g+u filename

    Adăugați un bit lipicios la un anumit director:

    chmod o+t dirname

Metoda numerică

Sintaxa comenzii chmod când se utilizează metoda numerică are următorul format:

chmod NUMBER FILE…

Când utilizați modul numeric, puteți seta permisiunile pentru toate cele trei clase de utilizatori (proprietar, grup și toate celelalte) în același timp.

NUMBER poate fi un număr de 3 sau 4 cifre.

Când se folosește un număr de 3 cifre, prima cifră reprezintă permisiunile proprietarului fișierului, cea de-a doua a grupului fișierului și ultima dintre toți ceilalți utilizatori.

Fiecare permisiuni de scriere, citire și execuție au următoarea valoare numerică:

  • r (citiți) = 4 w (scrieți) = 2 x (executați) = 1no permisiuni = 0

Numărul de permisiuni dintr-o anumită clasă de utilizator este reprezentat de suma valorilor permisiunilor pentru acel grup.

Pentru a afla permisiunile fișierului în modul numeric pur și simplu calculați totalul pentru toate clasele de utilizatori. De exemplu, pentru a da permisiunea de citire, scriere și execuție proprietarului fișierului, citiți și executați permisiuni la grupul fișierului și numai permisiunile de citire tuturor celorlalți utilizatori, veți face următoarele:

  • Proprietar: rwx = 4 + 2 + 1 = 7Grup: rx = 4 + 0 + 1 = 5 Alți: rx = 4 + 0 + 0 = 4

Folosind metoda de mai sus, ajungem la numărul 754 , care reprezintă permisiunile dorite.

Pentru a configura steagurile setuid , setgid și sticky bit setgid sticky bit , utilizați un număr de patru cifre.

Când se utilizează numărul de 4 cifre, prima cifră are următoarea semnificație:

  • setuid = 4setgid = 2sticky = 1no schimbări = 0

Următoarele trei cifre au aceeași semnificație ca atunci când utilizați un număr de 3 cifre.

Dacă prima cifră este 0, aceasta poate fi omisă, iar modul poate fi reprezentat cu 3 cifre. Modul numeric 0755 este același ca 755 .

Pentru a calcula modul numeric puteți folosi și o altă metodă (metodă binară), dar este ceva mai complicată. Să știi cum să calculezi modul numeric folosind 4, 2 și 1 este suficient pentru majoritatea utilizatorilor.

Puteți verifica permisiunile fișierului în notația numerică folosind comanda stat :

stat -c "%a" filename

644

Iată câteva exemple despre cum se utilizează comanda chmod în modul numeric:

  • Oferă proprietarului fișierului permisiuni de citire și scriere și permisiuni de citire numai membrilor grupului și tuturor celorlalți utilizatori:

    chmod 644 dirname

    Lăsați proprietarului fișierului să citească, să scrie și să execute permisiuni, să citească și să execute permisiunile membrilor grupului și să nu aibă permisiuni tuturor celorlalți utilizatori:

    chmod 750 dirname

    Dă permisiuni de citire, scriere și execuție și un bit lipicios pentru un anumit director:

    chmod 1777 dirname

    Setați recursiv la citirea, scrierea și execuția permisiunilor pentru proprietarul fișierului și fără permisiuni pentru toți ceilalți utilizatori dintr-un director dat:

    chmod -R 700 dirname

Utilizarea unui fișier de referință

Opțiunea --reference=ref_file vă permite să setați permisiunile fișierului să fie identice cu cele ale fișierului de referință specificat ( ref_file ).

chmod --reference=REF_FILE FILE

De exemplu, următoarea comandă va atribui permisiunile file1 file2

chmod --reference=file1 file2

Modificați recursiv Permisiunile fișierului

Pentru a opera recursiv pe toate fișierele și directoarele din directorul dat, utilizați opțiunea -R ( --recursive ):

chmod -R MODE DIRECTORY

De exemplu, pentru a modifica permisiunile tuturor fișierelor și subdirectoarelor din directorul /var/www la 755 ați folosi:

chmod -R 755 /var/www

Operare pe legături simbolice

Linkurile simbolice au întotdeauna 777 permisiuni.

În mod implicit, la modificarea permisiunilor de symlink, chmod va schimba permisiunile din fișierul la care este îndreptat linkul.

chmod 755 symlink

Șansele sunt că în loc să schimbați proprietatea țintă, veți primi o eroare „nu pot accesa„ simbolul ”: Permisul refuzat”.

Eroarea apare deoarece în mod implicit la majoritatea distribuțiilor Linux simbolurile sunt protejate și nu puteți opera pe fișierele țintă. Această opțiune este specificată în /proc/sys/fs/protected_symlinks . 1 înseamnă activat și 0 dezactivat. Se recomandă să nu dezactivați protecția de pe simboluri.

Modificarea permisiunilor de fișiere în volum

Uneori, există situații în care va trebui să schimbați în mod masiv permisiunile de fișiere și directoare.

Cel mai frecvent scenariu este de a schimba recursiv permisiunile fișierului site-ului web la 644 și permisiunile directorului la 755 .

Folosind metoda numerică:

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

Folosind metoda simbolică:

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 {} ;

Comanda find va căuta fișiere și directoare sub /var/www/my_website și va trece fiecare fișier și director găsit la comanda chmod pentru a seta permisiunile.

Concluzie

Comanda chmod modifică permisiunile fișierului. Permisiunile pot fi setate folosind modul simbolic sau numeric.

Pentru a afla mai multe despre chmod vizitați pagina man chmod.

terminal chmod