Wat is umask in Linux en hoe gebruik je het?

Wat is umask in Linux en hoe gebruik je het?
fatmawati achmad zaenuri/Shutterstock.com

In Linux hebben alle mappen en bestanden toegangsrechten. Je kunt gebruiken chmod om uw voorkeurstoegangsrechten voor verschillende gebruikers in te stellen. Maar wat bepaalt hun? standaard rechten? Laten we praten over umask.

Toegangsrechten

Alle mappen en bestanden hebben vlaggen genaamd modus bits die beslissen of ze kunnen worden gelezen, geschreven of uitgevoerd. Een bestand uitvoeren betekent het uitvoeren als een programma of een script. Voor een directory moet u een directory kunnen “uitvoeren” om cd erin. Gezamenlijk worden de instellingen voor de bitmodus de rechten van de map of het bestand.

Er zijn drie sets machtigingen. Eén set is voor de eigenaar van de map of het bestand. Tenzij het eigendom is veranderd met chownis de eigenaar de persoon die de map of het bestand heeft gemaakt.

Hoe werken Linux-bestandsmachtigingen?

VERWANTHoe werken Linux-bestandsmachtigingen?

De tweede set machtigingen is voor de leden van de gebruikersgroep waaraan de map of het bestand is toegewezen. Meestal is dit de gebruikersgroep van de eigenaar.

Er is een derde en laatste set machtigingen voor ‘anderen’. Het is een catch-all voor iedereen die niet in de eerste twee sets zit.

Door de machtigingen op deze manier te scheiden, kunnen verschillende mogelijkheden aan de drie categorieën worden gegeven. Dit is hoe directory- en bestandstoegang wordt geregeld in Linux. Hoewel het een eenvoudig schema is, biedt het een flexibele en robuuste manier om te dicteren wie wat kan doen met een map of bestand.

De modusbits

U kunt de machtigingen voor bestanden zien met behulp van de ls commando en de -l (lang formaat) optie.

ls -l any*

We zullen ook naar een map kijken door de . toe te voegen -d (map) optie. Zonder deze optie, ls zou kijken naar de bestanden in de map, niet naar de map zelf.

ls -ld

ls gebruiken om de machtigingen voor mappen en bestanden te zien

Aan het begin van elk item in de ls lijst, er is een verzameling van 10 tekens. Hier is een close-up van die tekens voor een bestand en voor een map.

De rechten van een bestand en map, close-up

Het bestand is de bovenste regel, de directory is de onderste regel. Het allereerste teken vertelt ons of we naar een map of een bestand kijken. Een “d” geeft een map aan en een streepje “-” geeft een bestand aan.

De drie sets machtigingen worden aangegeven door elke groep van drie tekens. Van links naar rechts zijn dit de machtigingen voor de eigenaar, de groep en anderen. In elke set machtigingen geven de drie tekens, van links naar rechts, de instelling voor de leesmachtiging “r”, de schrijfmachtiging “w” en de uitvoer “x” -machtiging aan. Een letter betekent dat de toestemming is ingesteld. een streepje “-” betekent dat de toestemming niet is ingesteld.

Voor ons voorbeeldbestand betekenen de 10 tekens:

  • : Dit is een bestand, geen map.
  • rwx: De eigenaar kan dit bestand lezen, schrijven en uitvoeren.
  • rw-: Andere leden van dezelfde groep waaraan dit bestand is toegewezen, kunnen het bestand lezen en ernaar schrijven, maar ze kunnen het niet uitvoeren.
  • r-: Alle anderen kunnen het bestand alleen lezen.

Voor onze voorbeeldmap betekenen de 10 tekens:

  • d: Dit is een map.
  • rwx: De eigenaar kan lezen, schrijven en uitvoeren (cd in) deze map.
  • rwx: Andere leden van dezelfde groep kunnen lezen, schrijven en cd in deze map.
  • rx: Iedereen kan cd in deze map, maar ze kunnen alleen bestanden lezen. Ze kunnen geen bestanden verwijderen, bestanden bewerken of nieuwe bestanden maken.

De permissies worden opgeslagen in modusbits in de metadata van de directory of het bestand. Elke modusbit heeft een numerieke waarde. Ze hebben allemaal de waarde nul als ze niet zijn ingesteld.

  • r: De leesbit heeft een waarde van 4 indien ingesteld.
  • met wie: Het schrijfbit heeft een waarde van 2 indien ingesteld.
  • x: De execute bit heeft een waarde van 1 indien ingesteld.

Een set van drie machtigingen kan worden weergegeven door de som van de bitwaarden. De maximale waarde is 4+2+1=7, waarmee alle drie de machtigingen in een set op ‘aan’ zouden worden gezet. Dat betekent dat alle permutaties van alle drie de sets kunnen worden vastgelegd in een octale waarde van drie cijfers (grondtal 8).

Als we ons voorbeeldbestand van hierboven nemen, heeft de eigenaar lees-, schrijf- en uitvoeringsrechten, wat 4+2+1=7 is. Andere leden van de groep waarin het bestand zich bevindt, hebben lees- en schrijfrechten, namelijk 4+2=6. De categorie anderen heeft alleen de leesmachtigingenset, die eenvoudig 4 is.

Dus de machtigingen voor dat bestand kunnen worden uitgedrukt als 764.

Met hetzelfde schema zouden de machtigingen voor de map 775 zijn. U kunt de Octale weergave van de machtigingen zien met behulp van de stat opdracht.

Hoe de chmod-opdracht op Linux te gebruiken

VERWANTHoe de chmod-opdracht op Linux te gebruiken

De chmod (chwoede mode bits) is de tool die wordt gebruikt om de machtigingen voor mappen en bestanden in te stellen. Maar het dicteert niet welke machtigingen zijn ingesteld voor een map of bestand wanneer u het maakt. Daarvoor wordt een standaard set machtigingen gebruikt.

De standaardmachtigingen en umask

De standaardrechten voor een map zijn 777 en de standaardrechten voor een bestand zijn 666. Dat geeft elke gebruiker volledige toegang tot alle mappen en de mogelijkheid om elk bestand te lezen en te schrijven. De execute-bit is niet ingesteld op bestanden. U kunt geen bestand maken waarvan de uitvoerbit al is ingesteld. Dat kan leiden tot veiligheidsrisico’s.

Hoe het stat-commando op Linux te gebruiken

VERWANTHoe het stat-commando op Linux te gebruiken

Als u echter een nieuwe map en een nieuw bestand aanmaakt en naar hun machtigingen kijkt, worden ze niet ingesteld op 777 en 666. We maken een bestand en een map en gebruiken dan stat doorgesluisd door grep om de regel met de Octal-weergave van hun machtigingen te extraheren.

touch umask-article.txt
mkdir howtogeek
stat umask-article.txt | grep "Access: ("
stat howtogeek | grep "Access: ("

standaardmachtigingen voor een map en bestand, en de stat-uitvoer voor elk ervan

Ze zijn ingesteld op 775 voor de map en 664 voor het bestand. Ze zijn niet ingesteld op de algemene standaardmachtigingen omdat een andere waarde ze wijzigt, de umask-waarde genoemd.

De umask-waarde:

De umask-waarde wordt globaal ingesteld met één waarde voor root en een andere voor alle andere gebruikers. Maar het kan voor iedereen op een nieuwe waarde worden ingesteld. Om te zien wat de huidige umask-instelling is, gebruikt u de umask opdracht.

umask

De umask-waarde voor een gewone gebruiker

En voor wortel:

umask

De umask-waarde voor de rootgebruiker

De machtigingen voor een nieuw aangemaakte map of bestand zijn het resultaat van de umask-waarde die de globale standaardmachtigingen wijzigt.

Net als de modusbits vertegenwoordigt de umask-waarde dezelfde drie sets machtigingen – eigenaar, groep en andere – en vertegenwoordigt deze als drie octale cijfers. Soms zie je ze geschreven als vier cijfers, met het eerste cijfer een nul. Dat is een verkorte manier om te zeggen “dit is een octaal getal”. Het zijn de drie meest rechtse cijfers die tellen.

De umask-waarde kan niet toevoegen rechten. Het kan alleen verwijderen—of masker uit-rechten. Dat is de reden waarom de standaardmachtigingen zo liberaal zijn. Ze zijn ontworpen om te worden teruggebracht tot redelijke niveaus door de toepassing van de umask-waarde.

Eén set standaardmachtigingen is niet geschikt voor alle gebruikers en ook niet voor alle scenario’s. Directory’s en bestanden die door root zijn gemaakt, hebben bijvoorbeeld meer beperkende machtigingen nodig dan de gemiddelde gebruiker. En zelfs een gemiddelde gebruiker wil niet dat iedereen in de categorie anderen zijn bestanden kan zien en wijzigen.

Hoe umask machtigingen maskeert

Door de maskerwaarde af te trekken van de standaardmachtigingen krijgt u de werkelijke machtigingen. Met andere woorden, als een toestemming is ingesteld in de umask-waarde, zal het: niet worden ingesteld in de machtigingen die zijn toegepast op de map of het bestand.

De umask-waarden werken als een inverse van de gebruikelijke machtigingswaarden.

  • 0: Er worden geen rechten verwijderd.
  • 1: De execute-bit is uitgeschakeld in de machtigingen.
  • 2: Het schrijfbit is uitgeschakeld in de machtigingen.
  • 4: Het leesbit is uitgeschakeld in de machtigingen.

De standaardmachtigingen van 777 voor mappen en 666 voor bestanden zijn gewijzigd door de umask-waarde van 002 om de uiteindelijke machtigingen van 775 en 664 op onze testmap en bestand op te leveren.

stat umask-article.txt | grep "Access: ("
stat howtogeek | grep "Access: ("

De uiteindelijke machtigingen voor een map en bestand

Dit verwijdert de schrijfrechten van de categorie overig in zowel de map als het bestand.

als root een directory aanmaakt, wordt hun umask-waarde 022 toegepast. De schrijfrechten worden verwijderd voor de categorie overig en ook voor de groepscategorie.

sudo mkdir root-dir
stat howtogeek | grep "Access: ("

De toestemming wanneer root een map aanmaakt

We kunnen zien dat de standaardrechten van 777 zijn teruggebracht tot 755.

De standaard umask-waarde wijzigen

Er zijn verschillende umask-waarden voor login-shells en niet-login-shells. Login-shells zijn de shells waarmee u kunt inloggen, lokaal of op afstand via SSH. Een shell zonder login is een shell in een terminalvenster als je al bent ingelogd.

Wees heel voorzichtig als u de login-shell umask wijzigt. Verhoog de machtigingen niet en verlaag uw beveiliging niet. Als er iets is, zou je geneigd moeten zijn om ze te verminderen en restrictiever te maken.

Op Ubuntu en Manjaro zijn de umask-instellingen te vinden in deze bestanden:

  • Inloggen Shell umask: Voor de standaard umask-waarde van de login-shell: /etc/profile
  • Shell zonder aanmelding: Voor de standaard umask-waarde van de shell zonder login: /etc/bash.bashrc

Op Fedora zijn de umask-instellingen te vinden in deze bestanden:

  • Inloggen Shell umask: Voor de standaard umask-waarde voor inloggen in de shell: /etc/profile
  • Shell zonder aanmelding: Voor de standaard umask-waarde van de shell zonder login: /etc/bashrc

Als u geen dringende behoefte heeft om deze te wijzigen, kunt u ze het beste met rust laten.

De voorkeursmanier is om een ​​nieuwe umask-waarde in te stellen voor individuele gebruikersaccounts die moeten verschillen van de standaard. Een nieuwe umask-instelling kan in het “.bashrc” -bestand van een gebruiker in hun thuismap worden geplaatst.

gedit .bashrc

Het .bashrc-bestand openen in een editor

Voeg uw umask-instelling toe aan de bovenkant van het bestand.

De umask-waarde toevoegen aan het .bashrc-bestand

Sla het bestand op en sluit de editor. open een nieuw terminalvenster en controleer de umask-waarde met de umask opdracht.

umask

De nieuwe umask-waarde controleren

De nieuwe waarde is actief.

Wijzigingen op korte termijn in umask

Als u op korte termijn een andere umask-waarde nodig heeft, kunt u deze voor uw huidige sessie wijzigen met de umask opdracht. Misschien gaat u een mappenboom en enkele bestanden maken en wilt u deze beter beveiligen.

U kunt de umask-waarde instellen op 077 en vervolgens controleren of de nieuwe waarde actief is.

umask 077
umask

Een tijdelijke umask-waarde instellen

Als u het masker instelt op een waarde van 7 in de categorieën voor groepen en andere, worden alle machtigingen uit die categorieën verwijderd. Niemand anders dan jij (en root) zal in staat zijn om de nieuwe mappen binnen te gaan en je bestanden te lezen en te bewerken.

mkdir secure-dir
ls -ld secure-dir

Een nieuwe map maken in een sessie met een tijdelijke umask-waarde

De enige machtigingen zijn voor de eigenaar van de map.

mkdir secure-file.txt
ls -ld secure-file.txt

Een nieuw bestand maken in een sessie met een tijdelijke umask-waarde

Het bestand is beveiligd tegen snuffelen door andere gebruikers. Als u uw terminalvenster sluit, wordt de tijdelijke umask-instelling genegeerd.

Andere manieren waarop umask wordt gebruikt

Linux staat toe dat sommige processen systeem-umask-waarden erven, of om hun eigen umask-instellingen te krijgen. Bijvoorbeeld, useradd gebruikt een umask-instelling om de thuismappen van nieuwe gebruikers te maken.

Een umask-waarde kan ook worden toegepast op een bestandssysteem.

less /etc/fstab

Kijken naar het /etc/fstab-bestand met minder

Op deze computer is op het bestandssysteem “/boot/efi” een umask-instelling van 077 toegepast.

De umask-instelling in het /etc/fstab-bestand

Kijken naar het aankoppelpunt van het bestandssysteem met ls we kunnen verifiëren dat de umask-waarde alle machtigingen van iedereen heeft verwijderd, behalve de eigenaar, root.

ls /boot/efi -ld

ls gebruiken om de machtigingen op het "/boot./efi" aankoppelpunt van het bestandssysteem te zien

umask en machtigingen hebben elkaar nodig

Standaardrechten worden toegepast op een map of bestand na ze zijn getransformeerd door de umask-waarde. Het zal zeer zeldzaam zijn dat u de umask-waarde permanent moet wijzigen voor een gebruiker, maar het tijdelijk instellen van uw umask-waarde om een ​​strakkere set machtigingen te geven terwijl u een verzameling gevoelige mappen of documenten aanmaakt, is een snelle en gemakkelijke manier om hun veiligheid.

Nieuwste artikelen

Gerelateerde artikelen