Upravljanje atributima datoteka i dozvolama u Linuxu iz terminala je jedna od onih vještina koje odvajaju osnovnog korisnika od onoga koji kontroliše sistem. kao pravi administratorNe radi se samo o premještanju ili brisanju datoteka: radi se o odlučivanju ko može čitati, pisati, izvršavati, brisati, komprimirati ili čak oporaviti izbrisane datoteke, te kako to učiniti sigurno i efikasno.
Ako dolazite s Windowsa ili macOS-a, ovaj svijet dozvola, posebnih atributa, čudnih dijelova i naredbi poput chmod, chown, chattr ili setfacl Možda se čini komplicirano. Ali kada shvatite logiku, vidjet ćete da vam Linux daje nevjerovatnu kontrolu nad vašim datotečnim sistemom. Ovdje ćete naučiti kako da njime upravljate od nule do vrlo naprednog nivoa, fokusirajući se na to kako da upravljate dozvolama i atributima datoteka i direktorija iz terminala kao profesionalac.
Dozvole u Linuxu: osnova za kontrolu vaših datoteka
U Linuxu, svaka datoteka i direktorij ima pridruženi skup dozvole koje definišu ko šta može da radiOve informacije su ključne za sigurnost i rad sistema, posebno u okruženjima s više korisnika ili serverima gdje se nekoliko ljudi povezuje istovremeno.
Vrste dozvola: čitanje, pisanje i izvršavanje
Svaka datoteka ili mapa može dozvoliti ili zabraniti tri osnovne radnje, koje su u Linuxu predstavljene s tri dobro poznata slova: r, wyx.
- r (čitaj): dozvola za čitanje. U datoteci vam omogućava pregled njenog sadržaja. U direktoriju vam omogućava da navedete imena datoteka koje sadrži.
- w (pisati): dozvola za pisanje. U datoteci, omogućava mijenjanje njenog sadržaja. U direktoriju, omogućava kreiraj, preimenuj ili izbriši datoteke unutra.
- x (izvrši)Dozvola za izvršavanje. U datoteci, omogućava njeno izvršavanje kao programa ili skripte. U direktoriju, omogućava... pristup iznutra (unesite sa cd i radite sa putanjama unutar njega).
Ove dozvole su kombinovane kako bi se precizno odredile. nivo pristupa svake vrste korisnika o nekom resursu.
Vrste korisnika: vlasnik, grupa i ostali
Svakom unosu u datotečnom sistemu dodijeljen je vlasnik/korisnik i a vlasnička grupaNa osnovu toga, Linux definiše tri nivoa dozvola:
- Vlasnik (korisnik, u)Obično je to korisnik koji je kreirao datoteku. To je obično korisnik s najvećim privilegijama nad tim resursom.
- Grupa (grupa, g)Grupa je skup korisnika koji dijele određene dozvole. Grupa koja je vlasnik datoteke određuje koje dozvole dijele članovi te grupe.
- DrugiSvi ostali korisnici koji nisu ni vlasnik ni članovi vlasničke grupe. Njihove dozvole su obično najrestriktivnije radi osiguranja sigurnosti.
Kombinovanje ove tri uloge sa dozvolama r i wyx omogućava vam da izgradite sistem pristupa. vrlo fleksibilan i istovremeno vrlo siguran...pod uslovom da ga razumno konfigurišete.
Kako pregledati dozvole i vlasnike pomoću ls -l
Za upravljanje dozvolama, prvi korak je znati koje su dozvole trenutno postavljene. Korištenje naredbe ls-l Dobijate detaljan popis datoteka i direktorija u trenutnom direktoriju, uključujući tip, dozvole, vlasnik, grupa i veličina.
Izlazni primjer:
drwxr-xr-x 3 bron bron 4096 may 6 13:19 Descargas
-rw-r--r-- 1 bron bron 512 may 6 12:00 archivo.txt
Prva kolona (na primjer, drwxr-xr-x) označava tip i dozvole:
- Prvi znak: tip unosa:
- ddirektorij
- -: normalna datoteka
- l: simbolički link, itd.
- Sljedećih 9 likova: tri bloka od po tri, po jedan za svaku ulogu:
- Pozicije 2-4: dozvole za vlasnik
- Pozicije 5-7: dozvole za grupa
- Pozicije 8-10: dozvole za drugi
Na primjer, -rwxr-x– To znači da je datoteka normalna (nije direktorij), vlasnik ima prava čitanja, pisanja i izvršavanja; grupa ima prava čitanja i izvršavanja; a ostali imaju samo prava čitanja.
chmod: Mijenja dozvole kao iskusni administrator
El Osnovna naredba za podešavanje dozvola u Linuxu es chmod (promjena načina rada)Pomoću njega konfigurirate šta svaki tip korisnika može učiniti na datoteci ili direktoriju, kako u simboličkoj notaciji (čitljivije) tako i u oktalnoj notaciji (kompaktnije i brže).
Osnovna sintaksa chmod-a
Najjednostavniji opći način korištenja chmod je:
chmod [opciones] modo archivo_o_directorio
Gde je on modo Može se specificirati slovima (simbolički) ili brojevima (oktalno). Pored toga, možete dodati opcije za izmjenu ponašanja, na primjer:
- -R: primijeni promjene rekurzivno svemu što se nalazi u direktoriju.
- -v: prikaži poruku za svaku izmijenjenu datoteku.
- -c: prikaži promjene samo u datotekama gdje je nešto stvarno izmijenjeno.
- -fTihi način rada; skriva poruke o greškama.
chmod sa slovima: simbolična notacija
U simboličkoj notaciji koristite slova za označavanje quién prima dozvole, koja operacija ti i koje dozvole Igraš. Odlično je za učenje jer je prilično intuitivno.
Uloge:
- u: vlasnik korisnik
- gvlasnička grupa
- o: ostali
- a: sve (u, gyo)
Operateri:
- +: dodajte dozvole
- -: ukloni dozvole
- =: postavi tačne dozvole (prepisuje prethodne)
Dozvole:
- rčitanje
- wpisanje
- x: izvršenje
Praktični primjeri korištenja simbolički chmod:
- Dajte puna prava svima na datoteku:
chmod a+rwx archivoDePrueba - Uklonite sva dopuštenja za "ostale" (ili):
chmod o-rwx archivoDePrueba - Izvršenje dati samo vlasniku:
chmod u+x script.sh
Ovaj pristup je veoma praktičan za brzo, fino podešavanje gdje god želite dodavanje ili oduzimanje određenih dozvola bez ponovnog izračunavanja svega u oktalnom formatu.
chmod s brojevima: oktalna notacija
Oktalna notacija se najčešće koristi u dokumentaciji i skriptama jer je vrlo kompaktna. Svaka trijada dozvola (rwx) se prevodi u broj između 0 i 7 korištenjem binarnih vrijednosti.
- r = 4
- w = 2
- x = 1
- Bez dozvole ( – ) = 0
Za svaku ulogu (vlasnik, grupa, ostali), sabirate vrijednosti dozvola koje želite dodijeliti. Neki tipični primjeri:
- rwx = 4+2+1 = 7
- rw - = 4+2+0 = 6
- rx = 4+0+1 = 5
- r– = 4+0+0 = 4
- - = 0+0+0 = 0
Mod je izražen trocifrenim brojem: korisnik / grupa / ostaliNeke vrijednosti koje ćete stalno viđati:
- 755: korisnički rwx, grupni rx, ostali rx. Vrlo uobičajeno za direktorije i skripte.
- 644: korisnik rw-, grupa r-, ostali r-. Tipično za tekstualne datoteke i dokumente.
- 700Samo vlasnik ima puna ovlaštenja; svi ostali nemaju nikakva.
- 666Svi mogu čitati i pisati, ali ne i izvršavati.
Primjeri upotrebe chmod oktalni:
- Dajte sva dopuštenja vlasniku, a nijedno ostalima:
chmod 700 archivoDePrueba - Postavite standardne dozvole za web datoteke:
chmod 644 index.html - Rekurzivno primijenite dozvole na direktorij i sav njegov sadržaj:
chmod -R 755 /var/www/mi_sitio
Ova metoda je posebno korisna kada želite ostavite sve homogenim (na primjer, cijelo stablo direktorija sa 755/644) bez potrebe za dodavanjem ili oduzimanjem dozvola jednu po jednu.
Uobičajeni rizici pri korištenju chmod-a
Glavna opasnost rada sa chmod Biti neoprezan znači previše otvarati. Na primjer, neselektivno dodjeljivanje 777 dozvola može se činiti zgodnim, ali u praksi to znači dati potpuni pristup svima, nešto kritično na serveru ili bilo kojoj mašini sa više korisnika.
Također je lako pokvariti stvari ako se ne sjećate originalnih dozvola, jer vraćanje složenih promjena bez dokumentacije može biti prava muka. Zato je dobra ideja:
- Izbjegavajte upotrebu 777 osim u vrlo specifičnim i kontroliranim slučajevima.
- Koristite uobičajene kombinacije poput 755/644, osim ako vam ne treba nešto drugo.
- Zabilježite ili sačuvajte u skripti dozvole koje primjenjujete da biste ponoviti ili obrnutim redoslijedom promjene.
chown i chgrp: promjena vlasnika i grupa
Pored dozvola, svaka datoteka ima i vlasnik i povezana grupaOvo određuje koji skup korisnika može imati koristi od određenog nivoa dozvola. Da biste promijenili ovo svojstvo bez mijenjanja samih dozvola, Linux nudi sljedeće naredbe: chown y chgrp.
chown: promjena vlasnika (i opcionalno grupe)
con chown Možete dodijeliti novog vlasnika datoteci ili direktoriju. Podrazumevano, samo root korisnik (ili neko sa odgovarajućim dozvolama) može promijeniti vlasnika resursa, upravo iz sigurnosnih razloga.
Osnovna sintaksa chown:
chown nuevo_usuario archivo
chown nuevo_usuario:nuevo_grupo archivo
chown -R nuevo_usuario:nuevo_grupo directorio
Tipični primjeri:
- Promijenite vlasnika datoteke (bez dodirivanja grupe):
sudo chown juan reporte.log - Promijenite vlasnika i grupu datoteke odjednom:
sudo chown juan:ventas informe.xlsx - Rekurzivno primijenite promjenu na direktorij i sve što on sadrži:
sudo chown -R www-data:www-data /var/www/mi_web
Ova naredba je neophodna kada premještate podatke između korisnika, migrirate web stranice, mijenjate strukturu grupe ili želite da sistemska usluga (kao što je web server) bude pravi vlasnik datoteka koje obrađuje.
chgrp: mijenja samo vlasničku grupu
Naredba chgrp Fokusira se na grupu koja je vlasnik datoteke ili direktorija, ostavljajući vlasnika netaknutim. Ovo je korisno kada želite prilagoditi šta korisnički tim dijeli pristup skupu resursa.
Osnovna sintaksa:
chgrp nuevo_grupo archivo
chgrp -R nuevo_grupo directorio
Primjeri:
- Promijenite grupu datoteke:
sudo chgrp contabilidad balance.csv - Kaskadna promjena grupe dijeljenih mapa:
sudo chgrp -R desarrollo /srv/proyectos - Uradite isto sa chownkoristeći samo grupu:
sudo chown :contabilidad balance.csv
Kombiniranje dobro osmišljenih grupa i odgovarajuće grupne dozvole (g)Možete postaviti sheme kolaborativnog rada gdje svaki tim vidi i mijenja samo ono što mu odgovara.
chattr i lsattr: posebni atributi za zaštitu datoteka
Pored klasičnih dozvola, ext-tip datoteka sistema (ext2, ext3, ext4, itd.) vam omogućava da definišete specijalni atributi na nivou kernela koje mijenjaju ponašanje datoteke ili direktorija pod određenim operacijama. Za to služe naredbe. brbljanje (promijenite atribute) i lsattr (navedite atribute).
Ovi atributi ne zamjenjuju dozvole, već djeluju preko njih, dodajući ograničenja ili dodatna ponašanja veoma moćan, posebno na serverima i kritičnim sistemima.
Pogledajte atribute pomoću lsattr-a
Prije nego što bilo šta promijenite, korisno je znati koje atribute datoteka trenutno ima. To se radi pomoću lsattr:
lsattr archivo
lsattr -R directorio
Izlaz prikazuje jedan red po datoteci, s nizom slova i crtica koji predstavljaju različite atribute. Na primjer:
----i--------e-- config.conf
U ovom primjeru, pismo i označava da je datoteka nepromjenjiva; ostale pozicije su atributi koji nisu aktivni (crtica).
Promijenite atribute pomoću chattra
Da biste postavili ili izbrisali ove posebne atribute, koristite brbljanjeOpšta sintaksa je:
chattr [opciones] [operación][atributos] archivo_o_directorio
Operacija je označena jednim od ovih simbola:
- +: dodajte atribut
- -: ukloni atribut
- =: postavlja te tačne atribute (prepisuje ostale)
Neki od najzanimljivijih atributa u Linux sistemima (posebno ext*) su:
- a: možeš samo dodati (dodati) na kraj datoteke. Brisanje ili prepisivanje postojećeg sadržaja nije dozvoljeno. Vrlo korisno za logove.
- c: datoteka je pohranjena komprimovani transparentno.
- d: isključuje arhiviranje određenih procesa rezerva (na primjer, ignorira dump).
- iNepromjenjiva datoteka. Ne može se mijenjati, preimenovati, izbrisati ili povezati dok je ovaj atribut aktivan.
- sSigurno brisanje (na nekim sistemima): Prilikom brisanja datoteke, blokovi se prepisuju kako bi se otežao oporavak.
- SIzmjene su napisane na način da... sinhrono, kao da ste izvršili sinhronizaciju nakon svake promjene.
- u: omogućava vam oporavak sadržaja datoteke nakon brisanja, ako datotečni sistem to podržava.
Primjeri praktične upotrebe brbljanje:
- Označite datoteku dnevnika tako da može rasti samo na kraju:
sudo chattr +a /var/log/mi_aplicacion.log - Kreirajte potpuno nepromjenjivu konfiguracijsku datoteku:
sudo chattr +i /etc/mi_servicio/config.conf - Uklonite atribut immutable kako biste ga mogli urediti:
sudo chattr -i /etc/mi_servicio/config.conf - Pogledajte koje datoteke u direktoriju imaju postavljen poseban atribut:
lsattr /ruta/al/directorio
Imajte na umu da manipulisanje atributima kao što su i o a Trebat će vam root pristup, a ove postavke mogu biti... prekid skripti ili aplikacija ako se ne uzme u obzir da se datoteka više ne može izbrisati ili izmijeniti.
Napredni ACL-ovi sa setfacl i getfacl

Tradicionalne Linux dozvole su zasnovane na shemi korisnik / grupa / ostaliU mnogim slučajevima ovo je dovoljno, ali postoje scenariji u kojima vam je potrebno nešto detaljnije, na primjer kada:
- Želite li odobriti pristup za čitanje nekoliko specifičnih korisnika koji ne dijele grupu.
- Morate dati određenom korisniku dodatne dozvole bez promjene grupe ili utjecaja na dozvole drugih.
Za to su oni namijenjeni. ACL (Liste kontrole pristupa)koji vam omogućavaju da definišete specifične dozvole za određene korisnike i grupe na datotekama i direktorijima.
Definišite dodatne dozvole pomoću setfacl-a
Naredba setfacl Koristi se za dodavanje, mijenjanje ili brisanje ACL unosa u datoteci ili direktoriju. Osnovna sintaksa je:
setfacl [opciones] regla archivo_o_directorio
Neki vrlo korisni primjeri setfacl:
- Dodjeljivanje prava čitanja i pisanja određenom korisniku na datoteku:
setfacl -m u:ana:rw archivo.txt - Dajte korisniku pristup samo za čitanje cijelog direktorija (rekurzivno):
setfacl -R -m u:carlos:r /srv/datos_compartidos - Definirajte zadani ACL na direktoriju, tako da nove datoteke nasljeđuju te dodatne dozvole:
setfacl -m d:u:equipo:rwx /srv/proyecto
Pravila slijede obrazac tip:identifikator:dozvole, gdje tip može biti u (korisnik), g (grupa), od: da bi se naznačilo da je to zadani ACL povezan s direktorijem.
Upiti ACL-ove pomoću getfacl-a
Da biste vidjeli koji ACL ima datoteka ili direktorij, koristite getfaclTo je neophodno kada želite provjeriti složene dozvole ili razumjeti zašto neko može ili ne može pristupiti nečemu.
Primjer upotrebe:
getfacl archivo.txt
getfacl /srv/proyecto
Izlaz uključuje i tradicionalne dozvole i dodatne ulaze definirane putem ACL-ova. Ovo vam omogućava da otkrivanje sukoba ili pravila za koja ste zaboravili da postoje.
Posebne dozvole: SUID, SGID i bit sticky
Pored klasičnog rwx-a, Linux ima tri dodatna mehanizma za rješavanje posebnih situacija: SUID, SGID i ljepljivi bitUglavnom se koriste u sistemskim binarnim datotekama i dijeljenim direktorijima za dalje fino podešavanje ponašanja.
SUID (Postavi UID)
Bit JUG u izvršnoj datoteci uzrokuje da se proces, kada se pokrene, izvršava s dozvolama vlasnik datoteke umjesto onih korisnika koji ga pokreće. To je ono što omogućava, na primjer, običnom korisniku da promijeni svoju lozinku pomoću passwd, ko treba da igra / etc / shadow, zaštićena datoteka.
U prikazu dozvola, SUID se pojavljuje zamjenom vlasnikovog x sa s (o S (ako nema izvršnog bita), na primjer:
-rwsr-xr-x 1 root root ... /usr/bin/passwd
Da biste ga aktivirali sa chmod U oktalnom sistemu, jedna cifra se dodaje prije uobičajene tri. Vrijednost za SUID je 4:
chmod 4755 binario→ rwxr-xr-x sa aktivnim SUID-om.
Korištenje SUID-a je nezgodno, jer svaki kvar u binarnoj datoteci sa SUID korijenom postaje potencijalna eskalacija privilegija.
SGID (Postavi GID)
El SHOE Radi slično, ali primijenjeno na grupu. U izvršnim datotekama, uzrokuje da se proces pokrene sa grupa datotekaU direktorijima, to ima posebno koristan efekat: datoteke kreirane unutar direktorija sa SGID-om nasljeđuju grupa vlasnika direktorijašto olakšava saradnju/saradnju.
U izlazu za dozvole, pojavljuje se sa s u grupnoj trijadi:
drwxr-sr-x 2 root desarrollo ... /srv/proyecto
Da biste ga aktivirali pomoću chmod octal, SGID vrijednost je 2 (prva cifra):
chmod 2755 /srv/proyecto→ direktorij sa SGID-om i dozvolama 755.
Ljepljivi dio (bit perzistencije)
El ljepljivi dio Gotovo se uvijek koristi u dijeljenim direktorijima kao što su /tmpEfekat je da, iako svi imaju dozvole za pisanje u direktoriju, samo vlasnik datoteke (ili root) Možete ga izbrisati ili preimenovati. To je sloj zaštite koji sprječava korisnike da brišu stvari jedni drugima.
U reprezentaciji dozvola, pojavljuje se kao t u izvršnoj poziciji "drugih":
drwxrwxrwt 10 root root ... /tmp
U oktalnoj notaciji, ljepljivi bit ima vrijednost 1 kao svoju prvu cifru:
chmod 1777 /carpeta_compartida
Kombinacijom SGID-a i sticky bita, možete montirati dijeljene radne direktorije gdje više korisnika surađuje, ali bez rizika da jedan izbriše drugog. greškom ili lošom idejom.
Praktične preporuke i uobičajeni rizici
Rad s naprednim dozvolama i atributima daje vam ogromnu moć nad sistemom, ali također otvara vrata za ozbiljne greške Ako se ne uradi pažljivo, preporučljivo je imati na umu neke smjernice:
- Izbjegavajte upotrebu chmod 777 osim u strogo kontroliranim i privremenim ispitivanjima.
- Za web servere, tipična konfiguracija je:
direktoriji 755 y fajlovi 644, s korisnikom/grupom web servera kao vlasnicima gdje je to prikladno. - Za kritične konfiguracijske datoteke, razmislite o korištenju chattr +i kako biste spriječili slučajne promjene, pod uvjetom da vam je jasno da ih kasnije možete poništiti.
- Ako upravljate Sambom ili FTP dijeljenjem, pažljivo dizajnirajte strukturu korisnici, grupe i dozvole tako da svaka osoba vidi samo ono što bi trebala.
- Dokumentujte neuobičajene promjene dozvola i atributa (SUID, SGID, složeni ACL-ovi, chattr) u skriptama ili bilješkama kako biste mogli Ponovi postavke ili popraviti ako se nešto pokvari.
Također je važno zapamtiti da svaki pristup datoteci zahtijeva da kernel provjeri dozvole, ACL-ove i sve posebne atribute. Na sistemima sa hiljade korisnika i milioni datotekaPreviše složene konfiguracije mogu imati određeni utjecaj na performanse, iako je u većini kućnih i malih i srednjih okruženja učinak prihvatljiv u usporedbi sa sigurnosnim prednostima.
Savladavanje komandi kao što su ls -l, chmod, chown, chgrp, chattr, lsattr, setfacl i getfaclZajedno s konceptima poput SUID-a, SGID-a i sticky bit-a, ovo vam omogućava da transformišete upravljanje dozvolama i atributima u precizni alat za kontrolu vašeg datotečnog sistema. Uz dobru strategiju za korisnike i grupe, malo zdravog razuma i dobro naučene komande, možete fino podesiti svoje Linux okruženje tako da svaka datoteka ima tačno onaj nivo pristupa koji joj je potreban: ni više, ni manje. Podijelite ove informacije kako bi više korisnika saznalo za novu funkciju.