Бири-бирине жабыштырылган эң аз артыкчылыктуу эки рецепт катаалыраак жайгаштырууну бербейт. Бир модель демонго артыкчылыктар менен баштап, инициализациядан кийин артыкчылыксыз эсепке түшүүгө мүмкүндүк берет; экинчиси кызмат менеджерине аны биринчи нускамадан эле чектелген инсандык менен иштетүүгө мүмкүндүк берет. Ар бири өзүнчө иштейт, ал эми айкалыш көп учурда эки иштин бирин да таза аткара албаган кызмат жаратат. Калганы чечимди ирети менен карайт.

Эки модель, которулуунун бир ээси

Биринчи модель демонго таандык. Коомдук OpenVPN версиясындагы user жана group опциялары туннель менен ачкычтар орнотулгандан кийин инсандыкты алмаштырат, ал эми persist-key жана persist-tun бул ресурстарды кийин да колдонууга жарактуу кылып кармайт.

Экинчи модель кызмат менеджерине таандык. systemd'дин User= же Group= параметри процесстин кайсы инсандык менен башталарын аныктайт, ал эми мүмкүнчүлүк директивалары анын эмнени кармай аларын аныктайт. Моделдердин ортосунда тандоо коопсуздук маселеси боло электе таңгактоо маселеси, жана пакетти кармаган адам ага мурун эле жооп берген. Сиздин милдетиңиз үчүнчү вариантты ойлоп табуу эмес, ошол жоопту табуу.

Экөө тең мыйзамдуу. Ката — аларды бир дизайндын катмарлары деп эсептөө, анткени экинчи модель биринчисинин инсандык которулушун процесске мындан ары уруксат берилбеген операцияга айландырышы мүмкүн.

Инсандык кайда өзгөрөрүн аныктаңыз

Эгер юнит мурун эле атайын эсеп катары башталса, демонго башка эсеп болуу тууралуу нускама катууланган кызмат эч качан жасабашы керек болгон setuid өтүүсүн талап кылат. Ийгиликсиздик иштетүүдө укук катасы катары көрүнөт, так саясат билдирүүсү катары эмес. Бул жетишпеген мүмкүнчүлүк сыяктуу окулат, бул адамдарды инсандык суроосуна эмес, кененирээк чектөөлөр жыйындысына түртөт.

Бир нерсени оңдоодон мурун орнотулган пакеттин чын эле эмне сунуштаарын окуңуз, анын drop-in каталогун кошкондо. Айрым юниттер демондун өз түшүүсүн атайылап калтырып кетишет, анткени менеджер аны мурун эле башкарат, ал эми кээ бирлери инициализациядан кийинки которулуу үчүн ошол опцияларга таянышат. Кайсы модель мурас болуп калганын билбей туруп экөөнүн бирин алып салуу — иштеп жаткан кызматтын иштөөдөн калышынын жолу.

Тандалган модельди бир сапка жазыңыз: менеджерге таандыкпы же демонго таандыкпы. Ар бир кийинки директива ошол сүйлөмгө ылайык болушу керек, ал эми аралаш юнитти компромисс эмес, ката деп эсептөө керек.

Мүмкүнчүлүктөр — чектөөлөр, сыйлык эмес

Мүмкүнчүлүк чектөөлөр жыйындысы процесстин эң көп эмнени кармай аларын айтат. Бул төбө, жана ал жерде мүмкүнчүлүктү тизмелөө өзүнчө эч нерсе бербейт, ошондуктан кенен чектөөлөр жыйындысы бар юнит да туннель түзө албашы мүмкүн.

Мүмкүнчүлүктү кызматтын айланасындагы жыйындыга чын эле жайгаштырган нерсе — AmbientCapabilities=. systemd аткаруу колдонмосу эки директиваны өз-өзүнчө документтештирет, жана ушул айырма интернеттеги мүмкүнчүлүктөр тууралуу чаташтырган кеңештердин көбүн түшүндүрөт.

Мүмкүнчүлүктү ийгиликсиз операция аны аныктагандан кийин гана кошуңуз. Кененирээк чектөөлөр жыйындысы чыныгы себепти жашырат жана кызматты дизайн көздөгөндөн да көп артыкчылык менен калтырат. Бул юнитти кароону да кыйындатат, анткени төбө мындан ары ишти сүрөттөбөйт. Чыныгы кемтик оңдолгондон кийин ашыкча мүмкүнчүлүктү алып салыңыз.

Ыйгарым укукту жашоо циклине бөлүштүрүңүз

Процесстин ар бир баскычта эмне кылышы керектигин тизмелеңиз: иштетүү, туруктуу абал, кайра аутентификация жана демонтаждоо. Интерфейс түзүү, маршруттарды өзгөртүү, корголгон ачкычты окуу жана жардамчыны чакыруу баары бир маалда же бирдей талаптар менен боло бербейт. Тизмени мүмкүнчүлүк боюнча иреттөөдөн мурун баскыч боюнча иреттеңиз.

Туруктуулук опциялары кайра сүйлөшүүлөр учурунда ресурстарды сактайт жана эч качан болбогон уруксаттарды бербейт. Процесс иштетүүдө окуй албаган ачкыч кийин да окулбайт, туруктуулук флактары эмне дешсе да. Флактар мурун иштеген нерсени сактайт.

Жалпы эмес, атайын эсепти колдонуңуз. OpenVPN иштеп чыгуучулары nobody эсебин жалпы мисал катары колдонуу адаттан эскертишет, анткени хосттогу башка кызматтар мурун эле ошол эсеп менен иштеп жатышы мүмкүн, ал эми сиз ойлогон обочолонуу ал жерде жок.

Жергиликтүү жүктү өзгөрткөн функциялар, мисалы маалымат каналын түшүрүү же башкача байланышкан куруу, кайсы операциялар керек экенин жылдырышы мүмкүн. Пакет өзгөргөндө картаны карап чыгыңыз, бир нерсе бузулганда гана эмес.

Планды жазып, калыбына келтирүү мүмкүнчүлүгүн сактаңыз

Жайгаштыруу жазуусу менеджерди, иштетүү инсандыгын, көздөлгөн туруктуу инсандыкты жана ар бир уруксатты аны талап кылган операция менен бирге аташы керек. Ошол жазуу кийинки өзгөртүүнү эксперимент эмес, кароого жарактуу кылат.

Оңдоо учурунда консолго кирүү мүмкүнчүлүгүн ачык кармаңыз, анткени иштетүүдө ийгиликсиз болгон юнитти алыстан оңдоо кыйын. Өзгөртүүнү бүттү деп жарыялоодон мурун кайра иштетүүнү жана толук кайра жүктөөнү сынап көрүңүз. Кайра иштетүүдөн өткөн юнит да тармак көтөрүлө электе ийгиликсиз болушу мүмкүн.

Ийгилик — түшүнүлгөн эң аз ыйгарым укуктагы жашоо цикли, ал эми root эмес ат менен кокустан иштеп жаткан процесс эмес.

Тектеш макалалар