Zoekrecht op elke map vóór de sleutel
Een sleutel kan 0600 zijn en toch weigeren te openen wanneer een bovenliggende map de doorgang blokkeert. Loop het hele pad als het serviceaccount voordat u een modus wijzigt.
Modus 0600 en de juiste eigenaar garanderen niet dat de service een sleutel kan openen. De ontbrekende toestemming zit meestal op een map erboven. Linux lost een pad één component tegelijk op, en elke stap vereist zoekrecht voordat de volgende wordt geprobeerd. Lees het hele pad, niet de laatste regel van de lijst.
Leesrecht is de laatste stap, niet de enige
Een bestand openen vereist dat de kernel vanaf de root of de werkmap elke component van het pad doorloopt. Een map zonder zoekrecht stopt die tocht met een toestemmingsfout. De modus van het bestand zelf wordt nooit bekeken, dus een perfect leesbare sleutel lijkt onleesbaar. De fout komt vaak bij het openen zonder de map te noemen, en daarom krijgt het laatste bestand de schuld.
Voor een map betekent de uitvoerbit zoeken, niet de inhoud uitvoeren. Een sleutel blijft data, en geen deel van deze reparatie vereist hem uitvoerbaar te maken.
Loop het pad als het serviceaccount
Lijst elke component met eigenaar en modus, en herhaal dan de leesactie als de werkelijke identiteit van de service. Het verschil tussen uw shell en de daemon is vaak het hele antwoord. Volg symbolische koppelingen naar het echte doel, want het opgeloste pad is wat wordt gecontroleerd.
namei -l /etc/openvpn/client/office.key
sudo -u vpn-reader stat -c '%A %U:%G %n' /etc/openvpn/client/office.key
Een service kan bestanden ook in meer dan één fase openen. Een deel van het materiaal wordt tijdens de geprivilegieerde opzet gelezen, terwijl andere bestanden worden geopend nadat privileges zijn afgestaan. Een rootshell die het bestand leest, reproduceert de toegang van de latere worker niet. Een mount-naamruimte kan een andere weergave van hetzelfde pad tonen, vooral in een container, dus vergelijk de bestandssysteemweergave van de daemon met de uwe.
Wijzig de smalste toestemming die past
Kies de kleinste regeling die het proces toegang geeft: een gecontroleerde groep met zoekrecht op de benodigde mappen, een beheerde locatie die de service al bezit, of een ander gedocumenteerd mechanisme. Een bestand lezen vereist geen schrijfrecht op de map. Breed groepsschrijfrecht op geprivilegieerde configuratie is geen normale doorgangsreparatie. Recursief 0777 is ook geen oplossing.
Noteer welke component u hebt gewijzigd en waarom. Een toestemmingswijziging zonder vastgelegde reden is moeilijk te beoordelen en makkelijk te vergeten.
Kijk pas na de tocht voorbij de modi
Als de modusbits voldoende lijken, zijn de resterende controles ACL's, beveiligingsbeleid en sandbox-beperkingen. Een ACL kan toegang geven die de modusbits als ontbrekend aanduiden, of toegang weigeren die ze lijken toe te staan. Die instellingen horen bij de bestaande configuratie-eigenaar, en ze moeten smal worden aangepast in plaats van uitgeschakeld. Een verschil in root of werkmap kan ook een absoluut pad verklaren dat in de ene context werkt en in een andere faalt.
Verlies niet uit het oog wat het bestand is terwijl u de toegang repareert. Een CA-certificaat is openbaar van ontwerp; een persoonlijke sleutel niet. Bestanden die de client herschrijft hebben ook andere schrijfrechten nodig dan een identiteitssleutel die alleen-lezen is. Inspecteer metadata zonder geheimen af te drukken, en bevestig daarna dat de service zelf na de wijziging werkt. Een korte notitie in de servicedocumentatie bespaart de volgende persoon dezelfde tocht.