Läget 0600 och rätt ägare garanterar inte att tjänsten kan öppna en nyckel. Den saknade behörigheten sitter oftast på en katalog ovanför. Linux löser upp en sökväg en komponent i taget, och varje steg kräver sökrätt innan nästa försöks. Läs hela sökvägen, inte sista raden i listningen.

Läsrätt är det sista steget, inte det enda

Att öppna en fil kräver att kärnan går från roten eller arbetskatalogen genom varje komponent i sökvägen. En katalog utan sökrätt stoppar den genomgången med ett behörighetsfel. Filens eget läge kontrolleras aldrig, så en fullt läsbar nyckel ser oläsbar ut. Felet kommer ofta vid öppning utan att katalogen nämns, och därför får den sista filen skulden.

För en katalog betyder körbiten sökning, inte körning av innehållet. En nyckel förblir data, och ingen del av den här reparationen kräver att den markeras som körbar.

Gå sökvägen som tjänstekontot

Lista varje komponent med ägare och läge, och upprepa sedan läsningen som tjänstens faktiska identitet. Skillnaden mellan ditt skal och daemonen är ofta hela svaret. Följ symboliska länkar till det verkliga målet, eftersom det är den upplösta sökvägen som kontrolleras.

namei -l /etc/openvpn/client/office.key
sudo -u vpn-reader stat -c '%A %U:%G %n' /etc/openvpn/client/office.key

En tjänst kan också öppna filer i mer än en fas. En del material läses under privilegierad konfiguration, medan andra filer öppnas efter att privilegier släppts. Ett root-skal som läser filen återskapar inte den senare arbetarens åtkomst. Ett mount-namnrymme kan visa en annan vy av samma sökväg, särskilt i en container, så jämför daemonens filsystemsvy med din.

Ändra den smalaste behörighet som passar

Välj den minsta ordning som ger processen åtkomst: en kontrollerad grupp med sökrätt på de nödvändiga katalogerna, en hanterad plats som tjänsten redan äger, eller en annan dokumenterad mekanism. Att läsa en fil kräver ingen skrivrätt på dess katalog. Bred gruppskrivrätt på privilegierad konfiguration är inte en normal genomgångsreparation. Rekursiv 0777 är inte heller en lösning.

Anteckna vilken komponent du ändrade och varför. En behörighetsändring utan dokumenterad anledning är svår att granska och lätt att glömma.

Se förbi lägen först efter genomgången

Om lägesbitarna verkar tillräckliga är de återstående kontrollerna ACL:er, säkerhetspolicy och sandbox-begränsningar. En ACL kan ge åtkomst som lägesbitarna antyder saknas, eller neka åtkomst som de verkar tillåta. De inställningarna tillhör den befintliga konfigurationsägaren, och de bör justeras snävt i stället för att stängas av. En skillnad i rot eller arbetskatalog kan också förklara en absolut sökväg som fungerar i ett sammanhang och misslyckas i ett annat.

Tappa inte bort vad filen är medan du reparerar åtkomsten. Ett CA-certifikat är offentligt av design; en privat nyckel är det inte. Filer som klienten skriver om behöver också andra skrivrätter än en identitetsnyckel som är skrivskyddad. Granska metadata utan att skriva ut hemligheter, och bekräfta sedan att tjänsten själv fungerar efter ändringen. En kort anteckning i tjänstedokumentationen sparar nästa person samma genomgång.

Relaterade artiklar