SSD Nodes Learn 🎉 VPS vanaf $5.50/mnd
Gidsen Matt ConnorDoor Matt Connor · Bijgewerkt 2026-08-13

Wat betekent drwxr-xr-x in Linux permissies?

Leer de betekenis van drwxr-xr-x en de omzetting naar 755. Ontdek waarom de x-bit essentieel is voor mappen en waarom u chmod 777 moet vermijden voor een veilig systeem.

Wat drwxr-xr-x betekent

drwxr-xr-x beschrijft een map die de eigenaar kan wijzigen, en die elke andere gebruiker kan lezen en openen zonder iets te wijzigen. In octale notatie is deze modus 755. Linux toont deze tien tekens aan het begin van elke regel in de uitvoer van ls -l, en ze betekenen altijd hetzelfde in dezelfde volgorde. Het leren van één reeks is dus voldoende om ze allemaal te begrijpen.

Eén regel is belangrijker dan de rest, omdat deze bepaalt of uw eigen tests betrouwbare resultaten opleveren. De root-gebruiker negeert permissiebits. De kernel verleent root de CAP_DAC_OVERRIDE-capaciteit (discretionary access control override), waardoor root bestanden opent waarvan de modus dit verbiedt. Elk voorbeeld op deze pagina slaagt voor root, ongeacht wat de bits aangeven. Log in als een normale gebruiker wanneer u wilt zien hoe de regels in de praktijk werken.

De tien tekens, één voor één

Maak een map en een bestand aan om te inspecteren. Niets in dit voorbeeld heeft invloed op zaken buiten de nieuwe map.

mkdir -p ~/permdemo/inner
printf 'hello\n' > ~/permdemo/inner/notes.txt
ls -ld ~/permdemo ~/permdemo/inner ~/permdemo/inner/notes.txt

Bij de gebruikelijke standaard umask van 022 beginnen de twee regels voor de map met drwxr-xr-x en begint de regel voor het bestand met -rw-r--r--.

Teken 1 is het bestandstype, geen permissie. d is een map. - is een regulier bestand. l is een symbolische link. c en b zijn character en block device nodes. s is een socket en p is een named pipe. Dit staat buiten de octale waarde, wat de reden is dat drwxr-xr-x 755 wordt in plaats van iets dat begint met een d.

De negen tekens daarna vormen drie groepen van drie, en hun volgorde verandert nooit.

  • Tekens 2 tot 4 vormen de owner-triade, de bits die gelden voor de gebruiker die eigenaar is van het bestand.
  • Tekens 5 tot 7 vormen de group-triade, de bits die gelden voor de groep van het bestand.
  • Tekens 8 tot 10 vormen de other-triade, de bits die gelden voor alle overige gebruikers.

Binnen een triade zijn de posities altijd r, dan w, dan x, en een streepje betekent dat de bit uitgeschakeld is. De letters veranderen nooit van positie. r-x is lezen zonder schrijven. -w- is schrijven zonder lezen, wat toegestaan maar zeldzaam is.

Dus drwxr-xr-x wordt als volgt gesplitst: d voor de map, dan rwx voor de eigenaar, dan r-x voor de groep, dan r-x voor de overigen.

Sommige systemen tonen een elfde teken. Een afsluitende punt, drwxr-xr-x., betekent dat het bestand een SELinux (security enhanced Linux) context bevat, wat standaard wordt getoond door SELinux-distributies zoals Fedora en Rocky. Een afsluitend plusteken, drwxr-xr-x+, betekent dat het bestand een POSIX ACL (access control list) bevat, een extra set regels bovenop deze negen bits. Lees deze extra regels met getfacl <path>.

r, w en x hebben verschillende functies bij een directory

Dit is de eerste regel die beginners verkeerd begrijpen. De letters zijn hetzelfde voor een bestand en voor een directory. De rechten die ze verlenen zijn echter verschillend.

  • r op een bestand leest de inhoud. r op een directory toont de namen die erin staan, wat nodig is voor een standaard ls.
  • w op een bestand wijzigt de inhoud. w op een directory voegt items toe of verwijdert deze. Het verwijderen van een bestand is een wijziging aan de directory; de schrijfrechten op de directory bepalen dit, terwijl de modus van het bestand zelf hier geen invloed op heeft.
  • x op een bestand voert het uit als programma. x op een directory maakt het mogelijk om erdoorheen te navigeren (traversal), wat betekent dat de kernel een naam in die directory kan opzoeken tijdens het resolven van een pad.

Navigatie is het onderdeel dat mensen vaak verrast. x op een directory voert niets uit. Het openen van /srv/site/index.html vereist x op /, vervolgens x op /srv, daarna x op /srv/site en ten slotte r op het bestand zelf. Als één directory in die keten geen x voor u heeft, stopt het opzoekproces daar. De aanroeper krijgt de melding Permission denied voor het gehele pad, zelfs als het bestand aan het einde voor iedereen leesbaar is. namei -l /srv/site/index.html toont elke stap van de keten met de bijbehorende modus en eigenaar, zodat u kunt zien welke schakel het proces blokkeert.

Een directory met r maar zonder x is een vreemde tussenstatus die het herkennen waard is. Een normale gebruiker kan de namen in de directory zien, omdat dit is wat r toestaat, maar kan geen metadata van de items opvragen. Daarom vult ls -l de kolommen voor grootte en modus met vraagtekens en toont voor elk item ls: cannot access ...: Permission denied.

De letters omzetten naar 755

Elke triade is een getal van drie bits. r is 4, w is 2, x is 1. Tel de actieve bits bij elkaar op.

  • rwx is 4 + 2 + 1 = 7
  • rw- is 4 + 2 = 6
  • r-x is 4 + 1 = 5
  • r-- is 4
  • --- is 0

drwxr-xr-x is daarom 7 voor de eigenaar, 5 voor de groep en 5 voor anderen: 755. -rw-r--r-- is 6, 4, 4: 644. drwxrwxr-x is 7, 7, 5: 775, wat 755 is met schrijfrechten toegevoegd voor de groep. U hoeft nooit handmatig tekens te tellen, omdat stat beide vormen tegelijkertijd toont.

stat -c '%A %a %U %G %n' ~/permdemo ~/permdemo/inner/notes.txt

%A is de lettervorm, %a is de octale vorm, en %U en %G benoemen de eigenaar en de eigenaarsgroep.

De permissiereeksen waar vaak naar gezocht wordt

Dit zijn de modi die u op een echte server tegenkomt, inclusief de octale waarde en de context waarin ze voorkomen.

  • -rw-r--r-- is 644. Gewone bestanden die een service alleen leest, zoals een configuratiebestand of een HTML-pagina.
  • -rw------- is 600. Geheimen: een SSH private key, of het .env-bestand van een applicatie.
  • -rw-rw-r-- is 664. Een bestand in een map die door een groep wordt gedeeld, waarbij teamleden schrijfrechten nodig hebben.
  • -rwxr-xr-x is 755. Scripts en binaries, zoals /usr/local/bin/backup.sh en het grootste deel van /usr/bin.
  • -rwx------ is 700. Een privescript dat alleen door de eigenaar mag worden uitgevoerd.
  • drwxr-xr-x is 755. Vrijwel elke systeemmappenstructuur en de document root van een website.
  • drwx------ is 700. ~/.ssh, en home-mappen op een beveiligd systeem.
  • drwxrwxr-x is 775. Een map waar de groep van de eigenaar in mag schrijven.
  • drwxrwsr-x is 2775. Hetzelfde, plus de setgid-bit, zodat nieuwe bestanden in de map de groep van de map overerven.
  • drwxrwxrwt is 1777. /tmp. De afsluitende t is de sticky bit, waardoor een gebruiker alleen zijn eigen bestanden kan verwijderen.
  • -rwsr-xr-x is 4755. Een setuid-binary die wordt uitgevoerd als de eigenaar, zoals /usr/bin/passwd en /usr/bin/sudo.
  • -rw-rw-rw- is 666, en drwxrwxrwx is 777. Wereldwijd schrijfbaar; op een server is dit bijna altijd een fout.
  • lrwxrwxrwx is wat elke symbolische link toont. Linux negeert de modusbits op een link en controleert in plaats daarvan het doel, dus deze reeks heeft geen enkele betekenis.

Welke triad is op u van toepassing

Dit is de tweede regel die beginners vaak verkeerd begrijpen. De kernel kiest precies één triad en stopt daar.

Als uw user ID overeenkomt met de eigenaar van het bestand, krijgt u de owner-triad; de group- en other-bits worden dan niet meer geraadpleegd. Als dit niet het geval is, maar de groep van het bestand is een van uw groepen, dan krijgt u de group-triad. In alle andere gevallen krijgt u de other-triad.

Hieruit volgen twee zaken. De owner-triad is van toepassing, zelfs als deze het meest restrictief is. Een bestand met mode 0466, weergegeven als -r--rw-rw-, geeft de eigenaar alleen leesrechten terwijl iedereen anders mag schrijven, omdat de owner-controle als eerste matchte en de rest niet meer werd gelezen. Dit is toegestaan en zorgt voor verwarring wanneer men dit voor het eerst tegenkomt.

De group-triad wordt vervolgens bepaald door de groep van het bestand, niet door de lijst met groepen waar u lid van bent. ls -l toont twee namen op elke regel: de eigenaar en daarna de groep. Alleen die tweede groep heeft zeggenschap over dat bestand. Lid zijn van twintig groepen helpt alleen als het bestand een van die groepen draagt.

id
stat -c '%U %G %A %n' ~/permdemo/inner/notes.txt

id toont uw gebruiker en elke groep waar u lid van bent. stat toont de eigenaar en groep van het bestand. Vergelijk deze twee en u weet welke triad de kernel voor u zal gebruiken.

Dit is de reden waarom een gedeelde map meestal een groep en de setgid-bit krijgt. sudo chmod 2775 /srv/shared wordt weergegeven als drwxrwsr-x, en bestanden die daarin worden aangemaakt, erven vervolgens de groep van de map in plaats van de persoonlijke groep van de maker, zodat de volgende persoon ze nog steeds kan bewerken. Elke service een eigen account geven is de andere helft van dit verhaal, en dit wordt behandeld in één Linux-gebruiker per service op een VPS.

umask bepaalt de modus van elk nieuw bestand

Een nieuw bestand neemt de modus niet over van de gebruiker. Het krijgt deze van het programma dat het aanmaakt, minus de bits die uw umask verwijdert. De umask is een masker van bits die moeten worden verwijderd; een hogere umask resulteert dus in meer afgeschermde bestanden.

De meeste distributies leveren 022 als standaard. Een programma dat een regulier bestand aanmaakt, vraagt om 0666. Een programma dat een map aanmaakt, vraagt om 0777. De umask verwijdert 022 van beide verzoeken, waardoor u 644 krijgt voor bestanden en 755 voor mappen. Dat is precies het paar dat u overal op een verse VPS ziet.

umask
umask -S
touch ~/permdemo/new.txt && mkdir -p ~/permdemo/newdir
ls -ld ~/permdemo/new.txt ~/permdemo/newdir

umask -S toont dezelfde waarde als letters, wat leesbaarder is dan 0022. Stel umask 027 in ~/.profile in voor een strengere standaard: 640 voor bestanden en 750 voor mappen, zodat uw groep uw werk kan lezen en niemand anders dat kan.

Er zijn twee beperkingen van belang. De umask kan alleen bits verwijderen, nooit toevoegen; daarom is een nieuw aangemaakt bestand nooit uitvoerbaar, ongeacht wat u instelt. Bovendien leest een systemd-service nooit uw shell-profiel, dus stel de waarde in plaats daarvan in het unit-bestand in.

[Service]
UMask=0027

Waarom webbestanden 644 en webmappen 755 zijn

Een webserver draait onder een eigen account, www-data op Debian en Ubuntu, nginx op Rocky en Alma. Dat proces moet de bestanden die het serveert kunnen lezen en door de bovenliggende mappen kunnen navigeren. Het heeft geen reden om deze te wijzigen, en een statische site mag dit nooit toestaan.

644 op een bestand geeft schrijfrechten aan de eigenaar en leesrechten aan iedereen, zodat de deploy-gebruiker kan publiceren en de webgebruiker kan serveren. 755 op een map geeft schrijfrechten aan de eigenaar en navigatierechten aan iedereen, zodat de webgebruiker het pad kan volgen zonder iets te kunnen toevoegen of verwijderen. Een bug in de applicatie kan dan de pagina's die het serveert niet overschrijven.

De navigatieregel is hier cruciaal. Als de site in /home/deploy/site staat en /home/deploy heeft modus 750, dan kan de webgebruiker de thuismap helemaal niet betreden. Het verzoek eindigt dan als HTTP 403 met een regel zoals deze in /var/log/nginx/error.log:

open() "/home/deploy/site/index.html" failed (13: Permission denied), client: 203.0.113.5

Die 13 is EACCES, de weigering van de kernel op basis van rechten. Er is niets mis met het netwerk: de poort luistert en het verzoek is aangekomen. Dat is wat dit verwarrend maakt terwijl u nog leert hoe listening ports werken op Linux. Voer namei -l /home/deploy/site/index.html uit en lees de keten af naar beneden voor de eerste map zonder x voor 'other'.

Een map waar de applicatie in schrijft, zoals een uploadpad, is de uitzondering. Verleen dat via eigenaarschap in plaats van met een ruimere modus: sudo chown -R www-data:www-data /srv/site/uploads en laat de modus op 755 staan. Houd schrijftoegang beperkt tot de ene map die het nodig heeft.

chmod, zonder de hele boomstructuur plat te slaan

chmod kent twee vormen. Octaal stelt alle negen bits tegelijk in: chmod 644 notes.txt. Symbolisch wijzigt alleen wat u opgeeft en laat de rest ongemoeid: chmod u+x deploy.sh voegt uitvoerrechten toe voor de eigenaar, en chmod go-w notes.txt verwijdert schrijfrechten voor de groep en anderen.

Recursie is waar boomstructuren beschadigd raken. chmod -R 755 . markeert elk afbeeldingsbestand en elk configuratiebestand als uitvoerbaar, omdat chmod geen onderscheid kan maken tussen een script en een JPEG. Gebruik in plaats daarvan de hoofdletter X.

chmod -R u=rwX,go=rX ~/permdemo
stat -c '%a %n' ~/permdemo ~/permdemo/inner/notes.txt

De hoofdletter X past uitvoerrechten toe op mappen, en op bestanden die al ergens een uitvoerbit hadden. Mappen krijgen de modus 755, gewone bestanden 644, en scripts die al uitvoerbaar waren, blijven dat. Wanneer een bestand al een modus heeft die u vertrouwt, kopieert chmod --reference=good.sh other.sh deze naar andere bestanden.

De meldingen die u ziet wanneer een bit onjuist is

bash: ./deploy.sh: Permission denied betekent dat het script niet beschikt over de x-bit in de triad die op u van toepassing is, of dat een map in het pad niet over de x-bit beschikt. chmod u+x deploy.sh lost het eerste geval op.

bash: ./deploy.sh: cannot execute: required file not found is een ander type fout met een verwarrende naam. De x-bit is in orde, maar de interpreter die op de eerste regel wordt genoemd, ontbreekt. De gebruikelijke oorzaak zijn Windows-regeleinden, waardoor de kernel zoekt naar een interpreter genaamd /bin/bash\r. Herstel dit met sed -i 's/\r$//' deploy.sh.

Permissions 0644 for '/home/deploy/.ssh/id_ed25519' are too open. is afkomstig van de SSH-client, die weigert een privésleutel te gebruiken die door andere accounts kan worden gelezen. De sleutel vereist 600 en ~/.ssh vereist 700. Het volledige beheer van sleutels staat in het beheren van SSH-sleutels en hun bestandsrechten.

Authentication refused: bad ownership or modes for directory /home/deploy/.ssh verschijnt in het logboek van de server wanneer een thuismap of de bijbehorende .ssh door de groep kan worden gewijzigd. De StrictModes-instelling van sshd wijst de sleutel af, en aan de kant van de client ziet dit eruit als een onverwachte wachtwoordprompt zonder uitleg.

sudo: /etc/sudoers is world writable, gevolgd door sudo: no valid sudoers sources found, quitting, betekent dat sudo de modus van zijn eigen configuratie heeft gecontroleerd en weigert uit te voeren. Dat bestand moet 0440 zijn. Dit is het klassieke gevolg van een breed recursief chmod-commando, en het kan tegelijkertijd optreden met de bovenstaande sshd-melding, waardoor de console van de provider de enige overgebleven toegangsweg is.

Waarom 777 geen oplossing is

777 geeft schrijfrechten aan elk account op de machine en aan elk proces dat onder een van die accounts draait. Een server voert services uit onder hun eigen gebruikers, dus "iedereen" omvat op een VPS veel meer dan op een laptop. Een service die gecompromitteerd raakt, kan schrijven waar 777 dit toestaat.

Onder een web root is de schade direct. Een voor iedereen beschrijfbare map die de server ook serveert, betekent dat een kwetsbaarheid in een bestandsupload een manier wordt om een script te plaatsen en dit vervolgens op te vragen.

777 is bijna altijd het verkeerde antwoord op een vraag over eigenaarschap. Het symptoom is "de app kan niet naar deze map schrijven". De oorzaak is dat de map aan de verkeerde gebruiker toebehoort. sudo chown -R appuser:appuser /srv/app/storage met modus 755 lost dit op en houdt elk ander account buiten de deur. Het aanmaken van die accounts voordat er iets wordt uitgerold, hoort bij de eerste tien minuten op een nieuwe VPS.

Schrijfrechten voor iedereen zijn op één bekende plek legitiem, /tmp, en dat wordt geschreven als drwxrwxrwt. De afsluitende t is de sticky bit: de map is voor iedereen beschrijfbaar, maar een gebruiker mag alleen bestanden verwijderen waarvan hij zelf de eigenaar is. Zonder die bit zou elk account de tijdelijke bestanden van een ander account kunnen verwijderen.

Lees een modus voordat u deze wijzigt

Deze commando's lezen alleen de status en zijn daarom veilig om overal uit te voeren.

id
umask
stat -c '%A %a %U %G %n' ~/permdemo ~/permdemo/inner/notes.txt
namei -l ~/permdemo/inner/notes.txt
find ~/permdemo -perm -0002

find <path> -perm -0002 geeft een lijst van alles onder een pad waarvan de 'world write'-bit is ingesteld. Dit is de snelste manier om een systeem te controleren nadat iemand reparaties heeft uitgevoerd met chmod 777.

Om te controleren of een specifiek service-account een map kan openen, voert u de controle uit als dat account. sudo -u www-data test -x /srv/site && echo yes || echo no geeft yes weer wanneer die gebruiker toegang heeft tot de map, en no wanneer dit niet het geval is. De controle uitvoeren als root bewijst niets, omdat root de controle overslaat en het antwoord altijd yes is.

FAQ

Wat betekent drwxr-xr-x in Linux?

Het is een directory, aangegeven door de leidende d, met modus 755. De eigenaar-triade is rwx, waardoor de eigenaar alle rechten heeft. De groep-triade is r-x en de overige-triade is r-x; iedereen kan dus de inhoud van de directory bekijken en erdoorheen navigeren, terwijl alleen de eigenaar bestanden kan toevoegen of verwijderen. Controleer elk pad met stat -c '%A %a %U %G %n' <path>, wat de lettervorm en de octale vorm naast elkaar weergeeft.

Waarom hebben webbestanden 644 en webdirectories 755?

De webserver draait onder een ander account, www-data op Ubuntu. Deze heeft leesrechten nodig voor de bestanden die worden geserveerd en moet door elke bovenliggende directory kunnen navigeren; schrijfpermissies zijn niet nodig. 644 geeft de eigenaar schrijfrechten en iedereen anders leesrechten. 755 geeft de eigenaar schrijfrechten en iedereen anders navigatierechten. Een directory waar de applicatie daadwerkelijk in moet schrijven, moet via chown worden overgedragen aan de gebruiker van die applicatie, in plaats van de modus voor iedereen te verruimen.

Betekent de x-bit dat ik een directory kan uitvoeren?

Nee. Bij een directory betekent x navigatie, oftewel het recht om een naam erin op te lossen terwijl de kernel een pad doorloopt. cd heeft dit nodig, evenals elke actie waarbij een bestand eronder wordt geopend. Elke directory in het pad vereist x; een bestand met modus 644 is dus onbereikbaar als een bovenliggende directory voor u geen x heeft. namei -l /path/to/file toont de modus van elke directory in de keten, wat aangeeft waar de opzoekactie stopt.

Is chmod 777 ooit de juiste oplossing?

Vrijwel nooit op een server. Het verleent schrijfrechten aan elk account op de machine, inclusief de accounts waaronder services draaien, waardoor een gecompromitteerde service het bestand kan overschrijven. Wanneer een applicatie niet in een directory kan schrijven, is het werkelijke probleem meestal het eigenaarschap: sudo chown -R appuser:appuser /srv/app/storage met modus 755 geeft de applicatie wat nodig is en sluit anderen uit. De bekende uitzondering is /tmp op 1777; dit werkt alleen omdat de sticky bit voorkomt dat gebruikers elkaars bestanden verwijderen.

Waarom toont ls een punt of een plus na de permissies?

Dat elfde teken beschrijft regels die verder gaan dan de negen permissiebits. Een punt, zoals in drwxr-xr-x., betekent dat er een SELinux-beveiligingscontext is gekoppeld, wat normaal is op Fedora en Rocky. Een plus, zoals in drwxr-xr-x+, betekent dat er een POSIX ACL (access control list) is ingesteld, waardoor bepaalde gebruikers of groepen rechten hebben die niet in de drie triaden zichtbaar zijn. Voer getfacl <path> uit om die extra vermeldingen weer te geven.

#permissions#ls#chmod#linux-basics#octal