Kako se koristi naredba chmod na Linuxu

Pomoću chmodnaredbe Linuxa kontrolirajte tko može pristupiti datotekama, pretraživati ​​direktorije i pokretati skripte . Ova naredba mijenja dozvole za Linux datoteke, koje na prvi pogled izgledaju komplicirano, ali zapravo su prilično jednostavne nakon što saznate kako rade.

chmod Mijenja dozvole datoteke

U Linuxu se tko može što raditi s datotekom ili direktorijom kontrolira putem skupova dozvola. Postoje tri seta dozvola. Jedan set za vlasnika datoteke, drugi set za članove grupe datoteka i završni set za sve ostale.

Dozvole kontroliraju radnje koje se mogu izvršiti na datoteci ili direktoriju. Oni ili dopuštaju ili sprječavaju čitanje, izmjenu ili izvršavanje datoteke, ako je to skripta ili program. Za direktorij dopuštenja određuju tko može cdu direktorij i tko može stvarati ili mijenjati datoteke unutar direktorija.

Pomoću  chmod naredbe postavljate svako od ovih dopuštenja. Možemo koristiti da bismo vidjeli koja su dopuštenja postavljena na datoteku ili direktorij ls.

Pregled i razumijevanje dozvola za datoteke

Možnost -l(dugi format) možemo koristiti za lspopis dozvola za datoteke i datoteke.

ls -l

U svakom retku prvi znak identificira vrstu unosa koji je naveden. Ako je crtica ( -), to je datoteka. Ako je to slovo, d to je imenik.

Sljedećih devet znakova predstavljaju postavke za tri skupa dozvola.

  • Prva tri znaka prikazuju dozvole za korisnika koji posjeduje datoteku ( korisnička dopuštenja ).
  • Srednja tri znaka prikazuju dozvole za članove grupe datoteka ( dopuštenja grupe ).
  • Zadnja tri znaka prikazuju dozvole za sve koji nisu u prve dvije kategorije ( ostala dopuštenja ).

U svakom skupu dozvola nalaze se tri znaka. Znakovi su pokazatelji prisutnosti ili odsutnosti jedne od dozvola. Oni su ili crtica ( -) ili slovo. Ako je znak crtica, to znači da dopuštenje nije dodijeljeno. Ako je lik r, w, ili x, da dopuštenje odobren.

Slova predstavljaju:

  • r : Dopuštenja za čitanje. Datoteka se može otvoriti i pregledati njezin sadržaj.
  • w : Dozvole za pisanje. Datoteka se može uređivati, mijenjati i brisati.
  • x : izvršavanje dozvola. Ako je datoteka skripta ili program, može se pokrenuti (izvršiti).

Na primjer:

  •  --- znači da uopće nisu dodijeljena dopuštenja.
  •  rwxznači da su dana potpuna dopuštenja. Svi su pokazatelji čitanja, pisanja i izvršavanja.

Na našem snimku zaslona, ​​prvi redak započinje s d. Ovaj se redak odnosi na direktorij nazvan "arhiva". Vlasnik direktorija je "dave", a ime grupe kojoj direktorij također naziva "dave".

Sljedeća su tri znaka korisnička dopuštenja za ovaj direktorij. Oni pokazuju da vlasnik ima puna dopuštenja. U r, wi xlikovi su sve prisutne. To znači da je korisnik dave pročitao, napisao i izvršio dozvole za taj direktorij.

Drugi skup od tri znaka su dozvole grupe, to su r-x. Oni pokazuju da su članovi grupe Dave pročitali i izvršili dozvole za ovaj direktorij. To znači da mogu navesti datoteke i njihov sadržaj u direktoriju i mogu se cd(izvršiti) u taj direktorij. Nemaju dopuštenja za pisanje, pa ne mogu stvarati, uređivati ​​ili brisati datoteke.

Posljednji set od tri znaka također je  r-x. Ta se dopuštenja primjenjuju na ljude kojima ne upravljaju prva dva skupa dopuštenja. Ti su ljudi (zvani "drugi") čitali i izvršavali dozvole za ovaj direktorij.

Dakle, da rezimiramo, članovi grupe i drugi čitaju i izvršavaju dozvole. Vlasnik, korisnik koji se zove dave, također ima dozvole za pisanje.

Za sve ostale datoteke (osim datoteke skripte mh.sh) dave i članovi grupe dave čitali su i pisali svojstva na datotekama, a ostale imaju samo dopuštenja za čitanje.

Za poseban slučaj datoteke skripte mh.sh, vlasnik Dave i članovi grupe čitali su, pisali i izvršavali dozvole, a ostali su čitali i izvršavali samo dopuštenja.

Razumijevanje sintakse dopuštenja

Da bismo koristili chmod za postavljanje dozvola, moramo to reći:

  • Tko: Za  koga postavljamo dozvole.
  • Što : Koju promjenu unosimo? Dodamo li ili uklanjamo dozvolu?
  • Što : Koja od dopuštenja postavljamo?

Koristimo indikatore za predstavljanje tih vrijednosti i oblikujemo kratke "izjave o dopuštenjima", na primjer u+x, gdje "u" znači "korisnik" (tko), "+" znači dodati (što), a "x" znači odobrenje za izvršenje (koje) .

Vrijednosti "tko" koje možemo koristiti su:

  • u : Korisnik, što znači vlasnik datoteke.
  • g : Group, što znači članovi grupe kojoj datoteka pripada.
  • o : Ostali, što znači ljudi koji nisu pod nadzorom ui gdozvolama.
  • a : Sve, što znači sve gore navedeno.

Ako se ništa od toga ne koristi, chmodponaša se kao da aje upotrijebljeno " ".

Vrijednosti "koje" možemo koristiti su:

  • - : Znak minus. Uklanja dozvolu.
  • + : Znak plus. Daje dopuštenje. Dopuštenje se dodaje postojećim dozvolama. Ako želite imati ovo dopuštenje i postaviti samo ovo dopuštenje, upotrijebite =opciju opisanu u nastavku.
  • = : Znak jednakosti. Postavite dopuštenje i uklonite druge.

Vrijednosti "koje" možemo koristiti su:

  • r : Odobrenje za čitanje.
  • w : Dopuštenje za pisanje.
  • x : Dopuštenje za izvršenje.

Postavljanje i izmjena dozvola

Recimo da imamo datoteku u kojoj svi imaju sva dopuštenja.

ls -l nova_datoteka.txt

Želimo da korisnik ima dozvole za čitanje i pisanje, a grupa i ostali korisnici samo dopuštenja za čitanje. Možemo to učiniti pomoću sljedeće naredbe:

chmod u = rw, og = r new_file.txt

Korištenje operatora "=" znači da ćemo izbrisati sve postojeće dozvole, a zatim postaviti navedena.

provjerimo novo dopuštenje za ovu datoteku:

ls -l nova_datoteka.txt

Uklonjena su postojeća dopuštenja, a nova su postavljena, kako smo i očekivali.

Što kažete na dodavanje dozvole bez uklanjanja postojećih postavki dozvola? To možemo i lako.

Recimo da imamo datoteku skripte koju smo završili s uređivanjem. Moramo ga učiniti izvršnim za sve korisnike. Njegova trenutna dopuštenja izgledaju ovako:

ls -l novi_skript.sh

Dopuštenje za izvršenje možemo dodati svima sljedećom naredbom:

chmod a + x novi_skript.sh

Ako pogledamo dozvole, vidjet ćemo da je odobrenje za izvršavanje sada dodijeljeno svima, a postojeća dopuštenja još uvijek postoje.

ls -l novi_skript.sh

Mogli smo postići istu stvar bez "a" u izjavi "a + x". Sljedeća naredba bi jednako dobro funkcionirala.

chmod + x novi_skript.sh

Postavljanje dozvola za više datoteka

Možemo primijeniti dozvole na više datoteka odjednom.

Ovo su datoteke u trenutnom direktoriju:

ls -l

Recimo da želimo ukloniti dozvole za pisanje za "ostale" korisnike iz datoteka s nastavkom ".page". To možemo učiniti pomoću sljedeće naredbe:

chmod ili * .stranica

Provjerimo kakav je to učinak imao:

ls -l

Kao što vidimo, dopuštenje za čitanje uklonjeno je iz datoteka. .Page za kategoriju korisnika „ostalo“. To nije utjecalo na druge datoteke.

Da smo htjeli uključiti datoteke u poddirektorijume, mogli bismo upotrijebiti opciju -R(rekurzivno).

chmod -R ili * .stranica

Numerička stenografija

Drugi način korištenja chmodje davanje dozvola koje želite dati vlasniku, grupi i drugima kao troznamenkasti broj. Krajnja lijeva znamenka predstavlja dozvole za vlasnika. Srednja znamenka predstavlja dozvole za članove grupe. Desna znamenka predstavlja dozvole za ostale.

Ovdje su navedene znamenke koje možete koristiti i što oni predstavljaju:

  • 0: (000) Nema dopuštenja.
  • 1: (001) Izvršite dopuštenje.
  • 2: (010) Dozvola za pisanje.
  • 3: (011) Zapisivanje i izvršavanje dozvola.
  • 4: (100) Dopuštenje za čitanje.
  • 5: (101) Dopuštenja za čitanje i izvršavanje.
  • 6: (110) Dopuštenja za čitanje i pisanje.
  • 7: (111) Dopuštenja za čitanje, pisanje i izvršavanje.

Svako od tri dopuštenja predstavljeno je jednim od bitova u binarnom ekvivalentu decimalnog broja. Dakle, 5, što je 101 u binarnom obliku, znači čitanje i izvršavanje. 2, što je 010 u binarnom značenju, značilo bi dopuštenje za pisanje.

Pomoću ove metode postavljate dozvole koje želite imati; ta dopuštenja ne dodajete postojećim dozvolama. Dakle, ako su dozvole za čitanje i pisanje već postojale, morat ćete upotrijebiti 7 (111) za dodavanje dozvola za izvršavanje. Upotreba 1 (001) uklonila bi dopuštenja za čitanje i pisanje i dodala dopuštenje za izvršavanje.

Dodajmo dopuštenje za čitanje natrag u datoteke. .Page za ostale kategorije korisnika. Moramo postaviti i korisnička i grupna dopuštenja, pa ih moramo postaviti na ono što već jesu. Ti korisnici već imaju dozvole za čitanje i pisanje, što je 6 (110). Želimo da "drugi" imaju čitanje i dopuštenja, pa ih treba postaviti na 4 (100).

Sljedeća naredba će to postići:

chmod 664 * .stranica

Ovim se postavljaju dopuštenja koja trebamo za korisnika, članove grupe i ostale na ono što trebamo. Korisnicima i članovima grupe vraćaju se dopuštenja na ono što su već bili, a ostalima se vraća odobrenje za čitanje.

ls -l

Napredne opcije

Ako pročitate man stranicu, chmodvidjet ćete da postoje neke napredne opcije povezane s SETUID i SETGID bitovima te s ograničenim brisanjem ili "ljepljivim" bitom.

U 99% slučajeva koji su vam potrebni chmod, ovdje su opisane opcije.