Wat zijn bestandsmachtigingen in Linux en hoe zorg ik ervoor dat de mijne veilig zijn?

0
184

In Linux bepalen bestandsmachtigingen de bevoegdheden voor bestandseigenaren en iedereen anders. Het is belangrijk om ervoor te zorgen dat alle webgerichte bestanden de juiste machtigingen hebben, zodat een gecompromitteerd proces niet kan schrijven naar plaatsen waar het niet zou moeten.

Wat zijn bestandsmachtigingen?

Bestandsmachtigingen volgen de machtigingen voor drie verschillende groepen. Elke groep wordt vertegenwoordigd door drie bits:

  • r: De “Read” toestemming staat een proces toe om de inhoud van dat bestand in het geheugen te lezen.
  • w: De “Write” toestemming geeft een proces toegang tot het overschrijven van de fysieke locatie op de schijf waar dat bestand is opgeslagen.
  • x: The “Execute” toestemming is voor programma's en staat toe dat dat bestand wordt uitgevoerd.

In de terminal worden de rechten als volgt weergegeven:

De eerste “d” geeft aan of het bestand een map is. De eerste groep van drie is voor de bestandseigenaar. In dit geval heeft de bestandseigenaar volledige lees-, schrijf- en uitvoeringstoegang. De volgende groep van drie is "groepseigenaren" die de toegangsrechten aangeeft voor de groep waartoe het bestand behoort, in dit geval alleen-lezen. De volgende groep is iedereen, die alleen-lezen is.

Over het algemeen zijn bestanden met open “iedereen” machtigingen zijn niet erg veilig. Zorg ervoor dat de laatste groep is ingesteld op alleen-lezen of geen toegang voor de meeste bestanden.

Onder de motorkap worden deze binair opgeslagen, waarbij elke toestemming een bit vertegenwoordigt. Bijvoorbeeld, rw- is 110 in binair getal, wat 6 is in decimaal. Dus de machtigingsreeks:

rwxrw-r– Advertentie

…zou kunnen worden opgeslagen als “764.” Op deze manier wordt er vaak naar bestandspermissies verwezen; “777” geeft volledige toegang aan, “700” is privé, “644” is alleen-lezen. Technisch gezien staat dit bekend als octaal, niet als decimaal, omdat er acht mogelijke waarden zijn voor elk cijfer.

Voor mappen gebruiken de machtigingen dezelfde tekens, maar zijn een beetje anders:

  • r: Lijsttoestemming. Hiermee kan de map worden geopend en kan ls worden gebruikt. Vereist dat het x-attribuut is ingesteld.
  • w: Schrijfrechten. Maakt het maken van nieuwe bestanden, het verwijderen van bestanden en het hernoemen van bestanden mogelijk. Voorkomt niet dat de inhoud van bestaande bestanden met schrijffunctie in de map wordt gewijzigd.
  • x:Toegankelijkheid. Staat het gebruik van cd toe. Dit wordt in het hele systeem gerespecteerd en voorkomt dat de map wordt geopend in een GUI-bestandsverkenner.

Op sommige systemen, met name macOS, kan een “@” na de bestandspermissiereeks. Dit betekent dat het bestand uitgebreide attributen heeft, die u kunt controleren met ls -l@. Het kenmerk com.apple.quarantine is bijvoorbeeld toegewezen aan uitvoerbare bestanden die nog niet zijn geopend, zodat Gatekeeper kan voorkomen dat u erop dubbelklikt, en u dwingen om met de rechtermuisknop op > openen en u vervolgens onnodig vragen of u echt zeker weet dat u het wilt openen.

Wat zijn bestandseigenaren en groepen?

De bestandseigenaar is slechts een bepaalde gebruiker, maar gebruikers in Unix-systemen werken niet op dezelfde manier als in Windows. Unix kan verschillende gebruikers hebben voor afzonderlijke processen, zoals mysql en nginx. Dit kan machtigingen zeer gedetailleerd maken; een instantie van MySQL die onder de mysql-gebruiker wordt uitgevoerd, heeft bijvoorbeeld toegang tot zijn eigen database, maar de nginx-gebruiker niet.

Gebruikersgroepen werken op een vergelijkbare manier, maar ondersteunen het hebben van meerdere gebruikers met dezelfde machtigingen. Gebruikers kunnen worden toegevoegd aan en verwijderd uit de groep en ze zijn optioneel voor het instellen van bestandsrechten.

Bestandsrechten van mappen controleren

Bestandsrechten van mappen controleren

h2>

U kunt bestands- en directoryrechten bekijken door ls -l in uw terminal uit te voeren. Bestandsrechten worden uiterst rechts weergegeven:

Advertentie

Als je de bestandsrechten voor een specifiek bestand of specifieke map wilt weergeven, moet je de uitvoer van ls naar grep pipen:

ls -la | grep bestandsnaam

Merk op dat de huidige map en bovenliggende map hun permissies hebben die worden weergegeven als . en .. bij gebruik van de vlag -a. Zelfs dit geeft echter slechts twee niveaus van machtigingen weer. Om de rechten voor elke bovenliggende map weer te geven, moet je het namei commando gebruiken:

namei -l `pwd`

Deze opdracht is mogelijk niet op elke Linux-distributie geïnstalleerd. Op macOS moet je het installeren vanuit brew.

Als je wilt zoeken naar individuele bestanden in die mappen die mogelijk foutieve rechten hebben, kun je de opdracht find gebruiken met de vlag -perm:

find ~ -type f -perm 777

Dit zoekt recursief en kan enige tijd duren als u het in de hoofdmap uitvoert.

Bestandsmachtigingen en eigendom wijzigen

Het wijzigen van bestandsrechten is eenvoudig met de opdracht chmod:

chmod 700 bestandsnaam

Je kunt ook rechten toevoegen zonder een volledige machtigingsreeks op te geven. Dit is een snelkoppeling, maar kan wat tijd besparen. Als u bijvoorbeeld een scriptbestand niet kunt openen, kunt u de eigenaar toestemming geven om uit te voeren met:

chmod u+x bestandsnaam Advertentie

Hiermee wordt de uitvoer (x)-machtiging toegevoegd voor de huidige eigenaar (u, voor “gebruiker”).

Het wijzigen van eigenaren werkt op dezelfde manier met het chown-commando:

chown owner:group bestandsnaam

The &#8220 ;:groep” is optioneel. Zowel chmod als chown kunnen recursief in mappen worden uitgevoerd om bestandsrechten voor alles in die mappen te wijzigen. Gebruik hiervoor de hoofdletter -R vlag:

chmod 700 -R directory

U kunt chmod ook gebruiken als de -exec-optie voor zoeken, waarmee u bestandsrechten in het hele systeem kunt wijzigen. Dit commando zal bijvoorbeeld bestanden zoeken die open schrijfrechten hebben, en deze instellen op alleen-lezen:

find/-type f -perm 777 -print -exec chmod 744 {} ;