Cum să utilizați comanda chmod pe Linux
Publicat: 2022-10-25 Controlați cine poate accesa fișiere, căuta în directoare și rula scripturi folosind comanda chmod
a Linux. Această comandă modifică permisiunile fișierelor Linux, care par complicate la prima vedere, dar sunt de fapt destul de simple odată ce știi cum funcționează.
chmod modifică permisiunile fișierelor
În Linux, cine poate face ce la un fișier sau director este controlat prin seturi de permisiuni. Există trei seturi de permisiuni. Un set pentru proprietarul fișierului, un alt set pentru membrii grupului fișierului și un set final pentru toți ceilalți.
Permisiunile controlează acțiunile care pot fi efectuate asupra fișierului sau directorului. Acestea fie permit, fie împiedică citirea, modificarea sau, dacă este un script sau program, executarea unui fișier. Pentru un director, permisiunile guvernează cine poate cd
în director și cine poate crea sau modifica fișiere din director.
Utilizați comanda chmod
pentru a seta fiecare dintre aceste permisiuni. Pentru a vedea ce permisiuni au fost setate pentru un fișier sau director, putem folosi ls
.
Vizualizarea și înțelegerea permisiunilor de fișiere
Putem folosi opțiunea -l
(format lung) pentru ca ls
să listeze permisiunile de fișiere pentru fișiere și directoare.
ls -l
Pe fiecare linie, primul caracter identifică tipul de intrare care este listată. Dacă este o liniuță ( -
) este un fișier. Dacă este litera d
, este un director.
Următoarele nouă caractere reprezintă setările pentru cele trei seturi de permisiuni.
- Primele trei caractere arată permisiunile pentru utilizatorul care deține fișierul ( permisiuni utilizator ).
- Cele trei caractere din mijloc arată permisiunile pentru membrii grupului fișierului ( permisiuni de grup ).
- Ultimele trei caractere arată permisiunile pentru oricine nu se află în primele două categorii ( alte permisiuni ).
Există trei caractere în fiecare set de permisiuni. Caracterele sunt indicatori pentru prezența sau absența uneia dintre permisiuni. Sunt fie o liniuță ( -
), fie o literă. Dacă caracterul este o liniuță, înseamnă că permisiunea nu este acordată. Dacă caracterul este un r
, w
sau un x
, acea permisiune a fost acordată.
Literele reprezintă:
- r : permisiuni de citire. Fișierul poate fi deschis și conținutul acestuia poate fi vizualizat.
- w : Permisiuni de scriere. Fișierul poate fi editat, modificat și șters.
- x : Executarea permisiunilor. Dacă fișierul este un script sau un program, acesta poate fi rulat (executat).
De exemplu:
-
---
înseamnă că nu au fost acordate deloc permisiuni. -
rwx
înseamnă că au fost acordate permisiuni complete. Indicatorii de citire, scriere și execuție sunt toți prezenți.
În captura noastră de ecran, prima linie începe cu un d
. Această linie se referă la un director numit „arhivă”. Proprietarul directorului este „dave”, iar numele grupului căruia îi aparține directorul se numește și „dave”.
Următoarele trei caractere sunt permisiunile utilizatorului pentru acest director. Acestea arată că proprietarul are permisiuni complete. Caracterele r
, w
și x
sunt toate prezente. Aceasta înseamnă că utilizatorul dave are permisiuni de citire, scriere și executare pentru acel director.
Al doilea set de trei caractere sunt permisiunile de grup, acestea sunt rx
. Acestea arată că membrii grupului dave au permisiuni de citire și executare pentru acest director. Asta înseamnă că pot lista fișierele și conținutul lor în director și pot cd
(executa) în acel director. Nu au permisiuni de scriere, așa că nu pot crea, edita sau șterge fișiere.
Setul final de trei caractere sunt, de asemenea, rx
. Aceste permisiuni se aplică persoanelor care nu sunt guvernate de primele două seturi de permisiuni. Aceste persoane (numite „alții”) au permisiuni de citire și executare pe acest director.
Deci, pentru a rezuma, membrii grupului și ceilalți au citit și executa permisiuni. Proprietarul, un utilizator numit dave, are și permisiuni de scriere.
Pentru toate celelalte fișiere (în afară de fișierul script mh.sh) dave și membrii grupului dave au proprietăți de citire și scriere pe fișiere, iar ceilalți au permisiuni de citire numai.
Pentru cazul special al fișierului script mh.sh, proprietarul dave și membrii grupului au permisiuni de citire, scriere și execuție, iar ceilalți au permisiuni doar de citire și execuție.
Înțelegerea sintaxei permisiunii
Pentru a folosi chmod
pentru a seta permisiunile, trebuie să îi spunem:
- Cine: pentru cine stabilim permisiunile.
- Ce : Ce schimbare facem? Adăugăm sau eliminăm permisiunea?
- Which : care dintre permisiunile le setăm?
Folosim indicatori pentru a reprezenta aceste valori și formăm „instrucțiuni de permisiuni” scurte, cum ar fi u+x
, unde „u” înseamnă „utilizator” (cine), „+” înseamnă adăugare (ce) și „x” înseamnă permisiunea de executare (care).
Valorile „cine” pe care le putem folosi sunt:
- u : Utilizator, adică proprietarul fișierului.
- g : Grup, adică membrii grupului din care aparține fișierul.
- o : Alții, adică oameni care nu sunt guvernați de permisiunile
u
șig
. - a : Toate, adică toate cele de mai sus.
Dacă niciunul dintre acestea nu este folosit, chmod
se comportă ca și cum ar fi fost folosit „ a
”.
Valorile „ce” pe care le putem folosi sunt:
- – : Semnul minus. Îndepărtează permisiunea.
- + : semnul plus. Acordă permisiunea. Permisiunea este adăugată la permisiunile existente. Dacă doriți să aveți această permisiune și numai această permisiune setată, utilizați opțiunea
=
, descrisă mai jos. - = : semnul egal. Setați o permisiune și eliminați altele.
Valorile „care” pe care le putem folosi sunt:
- r : Permisiunea de citire.
- w : Permisiunea de scriere.
- x : Permisiunea de executare.
Setarea și modificarea permisiunilor
Să presupunem că avem un fișier în care toată lumea are permisiuni complete pentru el.
ls -l new_ file.txt
Dorim ca utilizatorul dave să aibă permisiuni de citire și scriere, iar grupul și alți utilizatori să aibă numai permisiuni de citire. Putem face folosind următoarea comandă:
chmod u=rw,og=r new_file.txt
Utilizarea operatorului „=” înseamnă că ștergem toate permisiunile existente și apoi le setăm pe cele specificate.
haideți să verificăm noua permisiune pentru acest fișier:
ls -l fişier_nou.txt
Permisiunile existente au fost eliminate, iar noile permisiuni au fost setate, așa cum ne așteptam.
Ce zici de adăugarea unei permisiuni fără a elimina setările de permisiuni existente? Putem face asta cu ușurință și noi.
Să presupunem că avem un fișier script pe care l-am terminat de editat. Trebuie să îl facem executabil pentru toți utilizatorii. Permisiunile sale actuale arată astfel:
ls -l nou_script.sh
Putem adăuga permisiunea de execuție pentru toată lumea cu următoarea comandă:
chmod a+x new_script.sh
Dacă ne uităm la permisiuni, vom vedea că permisiunea de execuție este acum acordată tuturor, iar permisiunile existente sunt încă în vigoare.
ls -l nou_script.sh
Am fi putut realiza același lucru fără „a” din afirmația „a+x”. Următoarea comandă ar fi funcționat la fel de bine.
chmod +x new_script.sh
Setarea permisiunilor pentru mai multe fișiere
Putem aplica permisiuni pentru mai multe fișiere simultan.
Acestea sunt fișierele din directorul curent:
ls -l
Să presupunem că vrem să eliminăm permisiunile de citire pentru „ceilalți” utilizatori din fișierele care au extensia „.page”. Putem face acest lucru cu următoarea comandă:
chmod sau *.page
Să verificăm ce efect a avut:
ls -l
După cum putem vedea, permisiunea de citire a fost eliminată din fișierele „.page” pentru categoria „alte” de utilizatori. Niciun alt fișier nu a fost afectat.
Dacă am fi vrut să includem fișiere în subdirectoare, am fi putut folosi opțiunea -R
(recursivă).
chmod -R sau *.page
Stenografia numerică
O altă modalitate de a folosi chmod
este să oferiți permisiunile pe care doriți să le acordați proprietarului, grupului și altora ca număr din trei cifre. Cifra din stânga reprezintă permisiunile pentru proprietar. Cifra din mijloc reprezintă permisiunile pentru membrii grupului. Cifra din dreapta reprezintă permisiunile pentru celelalte.
Cifrele pe care le puteți utiliza și ceea ce reprezintă acestea sunt enumerate aici:
- 0: (000) Nicio permisiune.
- 1: (001) Executați permisiunea.
- 2: (010) Permisiune de scriere.
- 3: (011) Scrieți și executați permisiuni.
- 4: (100) Permisiune de citire.
- 5: (101) Citiți și executați permisiuni.
- 6: (110) Permisiuni de citire și scriere.
- 7: (111) Permisiuni de citire, scriere și executare.
Fiecare dintre cele trei permisiuni este reprezentată de unul dintre biții din echivalentul binar al numărului zecimal. Deci 5, care este 101 în binar, înseamnă citire și executare. 2, care este 010 în binar, ar însemna permisiunea de scriere.
Folosind această metodă, setați permisiunile pe care doriți să le aveți; nu adăugați aceste permisiuni la permisiunile existente. Deci, dacă permisiunile de citire și scriere erau deja existente, ar trebui să utilizați 7 (111) pentru a adăuga permisiuni de execuție. Utilizarea 1 (001) ar elimina permisiunile de citire și scriere și ar adăuga permisiunea de execuție.
Să adăugăm permisiunea de citire înapoi pe fișierele „.page” pentru celelalte categorii de utilizatori. Trebuie să setăm și permisiunile de utilizator și de grup, așa că trebuie să le setăm la ceea ce sunt deja. Acești utilizatori au deja permisiuni de citire și scriere, adică 6 (110). Dorim ca „ceilalți” să aibă permisiuni de citire și permisiuni, așa că trebuie setate la 4 (100).
Următoarea comandă va realiza acest lucru:
chmod 664 *.pagina
Aceasta setează permisiunile de care avem nevoie pentru utilizator, membrii grupului și alții la ceea ce avem nevoie. Utilizatorii și membrii grupului au permisiunile resetate la ceea ce erau deja, iar ceilalți au permisiunea de citire restaurată.
ls -l
Opțiuni avansate
Dacă citiți pagina de manual pentru chmod
, veți vedea că există câteva opțiuni avansate legate de biții SETUID și SETGID și de ștergerea restricționată sau de bitul „lipicios”.
Pentru 99% din cazurile pentru care veți avea nevoie de chmod
, opțiunile descrise aici vă vor acoperi.
Comenzi Linux | ||
Fișiere | tar · pv · cat · tac · chmod · grep · diff · sed · ar · om · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · tip · redenumire · zip · dezarhivare · montare · demontare · instalare · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm | |
Procesele | alias · ecran · top · frumos · renice · progres · strace · systemd · tmux · chsh · istoric · la · lot · gratuit · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · da · kill · sleep · sudo · su · time · groupadd · usermod · grupuri · lshw · shutdown · repornire · stop · poweroff · passwd · lscpu · crontab · data · bg · fg | |
Rețele | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
LEGATE: Cele mai bune laptopuri Linux pentru dezvoltatori și entuziaști