Режим 0600 и правилният собственик не гарантират, че услугата може да отвори ключ. Липсващото разрешение обикновено е в директория над него. Linux разрешава пътя компонент по компонент и всяка стъпка изисква право за търсене, преди да се опита следващата. Четете целия път, а не последния ред от списъка.

Правото за четене е последната стъпка, а не единствената

Отварянето на файл изисква ядрото да премине от корена или работната директория през всеки компонент на пътя. Директория без право за търсене спира това преминаване с грешка за разрешение. Собственият режим на файла никога не се преглежда, затова напълно четим ключ изглежда нечетим. Грешката често идва при отваряне, без да назовава директорията, и затова се обвинява последният файл.

За директория битът за изпълнение означава търсене, а не изпълнение на съдържанието. Ключът остава данни и никоя част от този ремонт не изисква отбелязването му като изпълним.

Преминете пътя като служебния акаунт

Избройте всеки компонент с неговия собственик и режим, след което повторете четенето като действителната идентичност на услугата. Разликата между вашата обвивка и демона често е целият отговор. Следвайте символичните връзки до реалната цел, защото проверяваният път е разрешеният.

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

Една услуга може да отваря файлове и на повече от един етап. Част от материала се чете при привилегирована настройка, докато други файлове се отварят след отпадане на привилегиите. Root обвивка, която чете файла, не възпроизвежда достъпа на по-късния работник. Пространството от имена за монтиране може да показва различен изглед на същия път, особено в контейнер, затова сравнете файловия изглед на демона с вашия.

Променете най-тясното право, което е достатъчно

Изберете най-малката схема, която дава достъп на процеса: контролирана група с право за търсене върху нужните директории, управлявано място, което услугата вече притежава, или друг документиран механизъм. Четенето на файл не изисква право за запис върху неговата директория. Широкото право за запис на група върху привилегирована конфигурация не е обичаен ремонт на преминаването. Рекурсивните 0777 също не са решение.

Запишете кой компонент сте променили и защо. Промяна на разрешение без записана причина е трудна за преглед и лесно се забравя.

Погледнете отвъд режимите едва след преминаването

Ако битовете на режима изглеждат достатъчни, останалите проверки са ACL, политика за сигурност и ограничения на sandbox. ACL може да даде достъп, който битовете сякаш отричат, или да откаже достъп, който те изглежда позволяват. Тези настройки принадлежат на текущия собственик на конфигурацията и трябва да се регулират тясно, вместо да се изключват. Разлика в корена или работната директория също може да обясни абсолютен път, който работи в един контекст и се проваля в друг.

Не губете представа какво е файлът, докато поправяте достъпа. Сертификатът CA е публичен по замисъл, частният ключ не е. Файловете, които клиентът пренаписва, също изискват различни права за запис от ключа за идентичност, който е само за четене. Прегледайте метаданните, без да отпечатвате тайни, след което потвърдете, че самата услуга работи след промяната. Кратка бележка в документацията на услугата спестява на следващия човек същото преминаване.

Подобни статии