Ce este umask în Linux și cum îl folosiți?
Publicat: 2022-07-29
În Linux, toate directoarele și fișierele au permisiuni de acces. Puteți utiliza chmod
pentru a seta drepturile de acces preferate pentru diferiți utilizatori. Dar ce decide permisiunile lor implicite ? Să vorbim despre umask
.
Permisiuni de acces
Toate directoarele și fișierele au steaguri numite biți de mod care decid dacă pot fi citite, scrise sau executate. Executarea unui fișier înseamnă rularea lui ca un program sau un script. Pentru un director, trebuie să poți „executa” un director pe care să îl cd
în el. În mod colectiv, setările modului de biți sunt numite permisiuni ale directorului sau fișierului.
Există trei seturi de permisiuni. Un set este pentru proprietarul directorului sau al fișierului. Cu excepția cazului în care proprietatea a fost schimbată cu chown
, proprietarul este persoana care a creat directorul sau fișierul.
Al doilea set de permisiuni este pentru membrii grupului de utilizatori căruia directorul sau fișierul a fost alocat. De obicei, acesta este grupul de utilizatori al proprietarului.
Există un al treilea și ultimul set de permisiuni pentru „alții”. Este un captivant pentru toată lumea care nu este cuprinsă în primele două seturi.
Separând astfel permisiunile, pot fi acordate capacități diferite celor trei categorii. Acesta este modul în care accesul la directoare și fișiere este controlat în Linux. Deși este o schemă simplă, oferă o modalitate flexibilă și robustă de a dicta cine poate face ce cu orice director sau fișier.
Biții de mod
Puteți vedea permisiunile pentru fișiere folosind comanda ls
și opțiunea -l
(format lung).
sunt -l orice*
De asemenea, ne vom uita la un director adăugând opțiunea -d
(director). Fără această opțiune, ls
s-ar uita la fișierele din director, nu la directorul în sine.
ls -ld
La începutul fiecărei intrări din lista ls
, există o colecție de 10 caractere. Iată un prim plan al acelor caractere pentru un fișier și pentru un director.
Fișierul este linia de sus, directorul este linia de jos. Primul caracter ne spune dacă ne uităm la un director sau la un fișier. Un „d” indică un director și o liniuță „ -
” indică un fișier.
Cele trei seturi de permisiuni sunt indicate de fiecare grup de trei caractere. De la stânga la dreapta, acestea sunt permisiunile pentru proprietar, grup și altele. În fiecare set de permisiuni, cele trei caractere, de la stânga la dreapta, indică setarea pentru permisiunea de citire „r”, permisiunea de scriere „w” și permisiunea de executare „x”. O scrisoare înseamnă că permisiunea este setată. O liniuță „ -
” înseamnă că permisiunea nu este setată.
Pentru fișierul nostru exemplu, cele 10 caractere înseamnă:
- – : Acesta este un fișier, nu un director.
- rwx : proprietarul poate citi, scrie și executa acest fișier.
- rw- : Alți membri ai aceluiași grup căruia îi este atribuit acest fișier pot citi și scrie în fișier, dar nu îl pot executa.
- r– : Toți ceilalți pot citi doar fișierul.
Pentru exemplul nostru de director, cele 10 caractere înseamnă:
- d : Acesta este un director.
- rwx : proprietarul poate citi, scrie și executa (
cd
în) acest director. - rwx : Alți membri ai aceluiași grup pot citi, scrie și
cd
în acest director. - rx : Toți ceilalți pot
cd
în acest director, dar pot citi doar fișiere. Nu pot șterge fișiere, nu pot edita fișiere sau nu pot crea fișiere noi.
Permisiunile sunt stocate în biți de mod în metadatele directorului sau fișierului. Fiecare bit de mod are o valoare numerică. Toate au valoarea zero dacă nu sunt setate.
- r : bitul citit are valoarea 4 dacă este setat.
- w : bitul de scriere are valoarea 2 dacă este setat.
- x : bitul de execuție are valoarea 1 dacă este setat.
Un set de trei permisiuni poate fi reprezentat de suma valorilor biților. Valoarea maximă este 4+2+1=7, ceea ce ar seta toate cele trei permisiuni dintr-un set la „pornit”. Aceasta înseamnă că toate permutările tuturor celor trei seturi pot fi capturate într-o valoare octală de trei cifre (bază 8).
Luând fișierul nostru exemplu de mai sus, proprietarul are permisiuni de citire, scriere și executare, care este 4+2+1=7. Alți membri ai grupului în care se află fișierul au permisiuni de citire și scriere, care este 4+2=6. Cealaltă categorie are doar setul de permisiuni de citire, care este pur și simplu 4.
Deci permisiunile pentru acel fișier pot fi exprimate ca 764.
Folosind aceeași schemă, permisiunile pentru director ar fi 775. Puteți vedea reprezentarea octală a permisiunilor folosind comanda stat
.
Comanda chmod
( ch ange mod e bits) este instrumentul folosit pentru a seta permisiunile pentru directoare și fișiere. Dar nu dictează ce permisiuni sunt setate pentru un director sau fișier atunci când îl creați. Pentru aceasta este folosit un set implicit de permisiuni.
Permisiunile implicite și umask
Permisiunile implicite pentru un director sunt 777, iar permisiunile implicite pentru un fișier sunt 666. Acest lucru oferă fiecărui utilizator acces deplin la toate directoarele și capacitatea de a citi și scrie orice fișier. Bitul de execuție nu este setat pe fișiere. Nu puteți crea un fișier care are deja setat bitul de execuție. Acest lucru ar putea duce la riscuri de securitate.
Cu toate acestea, dacă creați un director nou și un fișier nou și vă uitați la permisiunile acestora, acestea nu vor fi setate la 777 și 666. Vom crea un fișier și un director, apoi vom folosi stat
pipered prin grep
pentru a extrage linia cu reprezentarea octală a permisiunilor lor.
atingeți umask-article.txt
mkdir howtogeek
stat umask-article.txt | grep "Acces: ("
stat howtogeek | grep "Acces: ("
Sunt setate la 775 pentru director și 664 pentru fișier. Nu sunt setate la permisiunile globale implicite, deoarece o altă valoare le modifică, numită valoare umask.
Valoarea umask
Valoarea umask este setată global cu o valoare pentru root și alta pentru toți ceilalți utilizatori. Dar poate fi setat la o nouă valoare pentru oricine. Pentru a vedea care este setarea curentă umask, utilizați comanda umask
.
umask
Și pentru rădăcină:
umask

Permisiunile pentru un director sau fișier nou creat sunt rezultatul modificării valorii umask a permisiunilor globale implicite.
La fel ca biții de mod, valoarea umask reprezintă aceleași trei seturi de permisiuni - proprietar, grup și altele - și le reprezintă ca trei cifre octale. Uneori le veți vedea scrise ca patru cifre, prima cifră fiind zero. Acesta este un mod scurt de a spune „acesta este un număr octal”. Sunt cele trei cifre din dreapta care contează.
Valoarea umask nu poate adăuga permisiuni. Poate doar să elimine sau să mascheze permisiunile. De aceea, permisiunile implicite sunt atât de liberale. Sunt proiectate pentru a fi reduse la niveluri sensibile prin aplicarea valorii umask.
Un set de permisiuni implicite nu se va potrivi tuturor utilizatorilor și nici nu se va potrivi tuturor scenariilor. De exemplu, directoarele și fișierele create de root vor avea nevoie de permisiuni mai restrictive decât utilizatorul obișnuit. Și chiar și un utilizator obișnuit nu dorește ca toată lumea din categoria celorlalți să poată vedea și modifica fișierele.
Cum umask maschează permisiunile
Scăderea valorii măștii din permisiunile implicite vă oferă permisiunile reale. Cu alte cuvinte, dacă o permisiune este setată în valoarea umask, aceasta nu va fi setată în permisiunile aplicate directorului sau fișierului.
Valorile umask funcționează ca o inversă față de valorile obișnuite ale permisiunii.
- 0 : Nu sunt eliminate permisiuni.
- 1 : bitul de execuție este nesetat în permisiuni.
- 2 : bitul de scriere este nesetat în permisiuni.
- 4 : bitul de citire este nesetat în permisiuni.
Permisiunile implicite de 777 pentru directoare și 666 pentru fișiere au fost modificate de valoarea umask de 002 pentru a obține eventualele permisiuni de 775 și 664 pentru directorul și fișierul nostru de testare.
stat umask-article.txt | grep "Acces: ("
stat howtogeek | grep "Acces: ("
Acest lucru elimină permisiunea de scriere din categoria celelalte atât în director, cât și în fișier.
dacă root creează un director, se aplică valoarea lor umask de 022. Permisiunea de scriere este eliminată pentru categoria celelalte și pentru categoria grup.
sudo mkdir root-dir
stat howtogeek | grep "Acces: ("
Putem vedea că permisiunile implicite de 777 au fost reduse la 755.
LEGATE: Cum să auditați securitatea sistemului dvs. Linux cu Lynis
Modificarea valorii umask implicite
Există diferite valori umask pentru shell-urile de conectare și shell-urile non-login. Shell-urile de conectare sunt shell-urile care vă permit să vă conectați, fie local, fie de la distanță prin SSH. Un shell non-login este un shell în interiorul unei ferestre de terminal atunci când sunteți deja autentificat.
Fiți foarte atenți dacă schimbați shell-ul de conectare umask. Nu măriți permisiunile și reduceți securitatea. În orice caz, ar trebui să fiți înclinați să le reduceți și să le faceți mai restrictive.
Pe Ubuntu și Manjaro, setările umask pot fi găsite în aceste fișiere:
- Login Shell umask : Pentru valoarea umask implicită a shell-ului de autentificare: /etc/profile
- Shell non-login: pentru valoarea umask implicită pentru shell non-login: /etc/bash.bashrc
Pe Fedora, setările umask pot fi găsite în aceste fișiere:
- Login Shell umask : Pentru valoarea umask implicită a shell-ului de conectare: /etc/profile
- Shell non-login: pentru valoarea umask implicită pentru shell non-login: /etc/bashrc
Dacă nu aveți o nevoie presantă de a le schimba, cel mai bine este să le lăsați în pace.
Modul preferat este să setați o nouă valoare umask pentru orice cont de utilizator individual care trebuie să difere de valoarea implicită. O nouă setare umask poate fi introdusă în fișierul „.bashrc” al unui utilizator din directorul de acasă.
gedit .bashrc
Adăugați setarea Umask în partea de sus a fișierului.
Salvați fișierul și închideți editorul. deschideți o nouă fereastră de terminal și verificați valoarea umask cu comanda umask
.
umask
Noua valoare este activă.
LEGATE: Cum să vă conectați la un server SSH din Windows, macOS sau Linux
Modificări pe termen scurt la umask
Dacă aveți o cerință pe termen scurt pentru o valoare umask diferită, o puteți modifica pentru sesiunea curentă folosind comanda umask
. Poate că veți crea un arbore de directoare și câteva fișiere și doriți să aveți o securitate sporită asupra lor.
Puteți seta valoarea umask la 077, apoi verificați că noua valoare este activă.
umask 077
umask
Setarea măștii să aibă o valoare de 7 în grup și alte categorii înseamnă că toate permisiunile sunt eliminate din acele categorii. Nimeni în afară de tine (și root) nu va putea să intre în noile directoare și să citească și să editeze fișierele.
mkdir secure-dir
ls -ld secure-dir
Singurele permisiuni sunt pentru proprietarul directorului.
mkdir secure-file.txt
ls -ld secure-file.txt
Fișierul este securizat împotriva snooping-ului de la alți utilizatori. Închiderea ferestrei terminalului anulează setarea temporară umask.
Alte moduri în care este folosit umask
Linux permite unor procese să moștenească valorile umask de sistem sau să li se dea propriile setări umask. De exemplu, useradd
folosește o setare umask pentru a crea directoare de acasă ale utilizatorilor noi.
O valoare umask poate fi aplicată și unui sistem de fișiere.
mai puțin /etc/fstab
Pe acest computer, sistemul de fișiere „/boot/efi” are aplicată o setare umask de 077.
Privind punctul de montare a sistemului de fișiere cu ls
, putem verifica că valoarea umask a eliminat toate permisiunile tuturor, cu excepția proprietarului, root.
ls /boot/efi -ld
umask și permisiunile au nevoie reciproc
Permisiunile implicite sunt aplicate unui director sau fișier după ce au fost transformate de valoarea umask. Va fi foarte rar să fie nevoie să modificați permanent valoarea umask pentru un utilizator, dar setarea temporară a valorii umask pentru a oferi un set mai strict de permisiuni în timp ce creați o colecție de directoare sau documente sensibile este o modalitate rapidă și ușoară de a le consolida. Securitate.
LEGATE: Cum să vă securizați serverul Linux cu un firewall UFW