Ինչու nosuid-ը խանգարում է VPN-ի օգնականին դառնալ root
Գաղտնագրված տնային պանակը և nosuid-ով միացումը տարբեր հատկություններ են։ Օգնականին պետք է վստահելի տեղակայման ուղի և գործարկման համատեքստ, որը հարգում է նրա արտոնության բիթը։
Սկավառակի գաղտնագրումը և nosuid-ով միացումը հնչում են որպես նույն գաղափարի տարբերակներ, և նրանք բոլորովին կապ չունեն։ Մեկը պաշտպանում է հանգստի վիճակում գտնվող տվյալները, իսկ մյուսը որոշում է՝ արդյոք միջուկը կհարգի արտոնության բիթը այն պահին, երբ ծրագիրը սկսում է։ Օգնականը, որը չի հասնում իր սպասած ինքնությանը, բողոքում է երկրորդից։ Այն ենթադրությունը, որ առաջինն է պատասխանատու, մարդկանց ուղարկում է վերատեղադրելու այնպիսի հաճախորդներ, որոնք երբեք չեն փչացել։
Երկու անկապ հատկություն
Սկավառակի գաղտնագրումը պատասխանում է, թե ով կարող է կարդալ բլոկները, երբ մեքենան անջատված է։ Միացման ընտրանքը պատասխանում է, թե ինչ կանի միջուկը ֆայլի ռեժիմի բիթերի հետ, երբ ինչ-որ մեկը գործարկում է այն։ Առաջինում ոչինչ չի սահմանափակում երկրորդը, և ամբողջությամբ գաղտնագրված նոթբուքը կարող է միացնել ֆայլային համակարգ բոլոր սահմանափակումներով։
Նրանց մեկ հատկություն կարդալն է, որ ստեղծում է այն տեսությունը, թե գաղտնագրված տնային պանակը խանգարում է root-ի հասանելիությանը։ Այդ տեսությունը պահպանվում է, որովհետև երկու ախտանիշները հայտնվում են նույն մեքենայի վրա, ոչ թե որովհետև նրանք ընդհանուր պատճառ ունեն։
Ինչն է իրականում ճնշում անցումը
execve-ի տեղեկագիրը նկարագրում է, թե ինչպես է set-user-ID-ով գործարկվող ֆայլը նոր պրոցեսի արդյունավետ ինքնությունը փոխում ֆայլի սեփականատիրոջով։ Նույն էջը թվարկում է այն պայմանները, որոնք ճնշում են այդ անցումը, և դրանց համարժեքը խմբային նույնացուցիչների համար՝ no_new_privs կարգավորում, nosuid-ով միացված ֆայլային համակարգ և հետևվող պրոցես։ Ֆայլի հնարավորությունները անտեսվում են նույն պայմաններում։ Այդ չորս կանոնները ծածկում են այս տեսակի գրեթե բոլոր հաշվետվությունները։
Այդ ցանկը բացատրում է, թե ինչու ls-ի տպած ռեժիմը երբեք ամբողջ լիազորման պատմությունը չէ։ Այն չի ասում, թե որ պայմանն է առաջացրել կոնկրետ ձախողման հաղորդագրություն, և հավելվածը կարող է նույն բառերով հայտնել անկապ հավատարմագրային գործողության մասին։ Նախքան եզրակացնելը գրանցեք ճշգրիտ ծրագիրը, գործարկիչը և սխալների հաջորդականությունը։
Որոշեք աջակցվող փաթեթի տեղադրած գործարկվող ֆայլը, դրա սեփականատիրոջը, իրական ուղին և այն պարունակող ֆայլային համակարգի քաղաքականությունը։ Ներբեռնումների պանակում ընկած պատճենը տեղադրված օգնականը չէ, ինչ էլ ասի դրա ռեժիմը։
Ինչ չանել այդ կապակցությամբ
Չստուգված բինար ֆայլի վրա set-user-ID բիթեր դնելը և այն տեղից տեղ տեղափոխելը, մինչև սահմանափակումը անհետանա, վերանորոգում չէ։ Այն փոխարինում է ձեր չհասկացած քաղաքականությունը մի արտոնությամբ, որը չեք կարող աուդիտ անել, և նույն տեխնիկան օգնականի վրա կիրառվածը հայտնի բարձրացման ուղի է։ nosuid-ը միացումից հեռացնելն ավելի վատ է, որովհետև այն ազդում է այդ ֆայլային համակարգի յուրաքանչյուր ծրագրի վրա, ոչ միայն մեկի։
Աջակցվող ուղին հաճախորդի փաստաթղթավորված օգնականի կամ ծառայության տեղադրումն է, որը կատարում է ադմինիստրատորը և տեղադրում է բինարը այնտեղ, որտեղ քաղաքականությունը սպասում է։ Այդպես մնում է մեկ արտոնության մեխանիզմ՝ երկուսի փոխարեն։
Հաստատեք իրական գործարկման համատեքստը
Լիազորված ուղղումից հետո գործարկեք օգնականին այնպես, ինչպես արտադրանքն է գործարկում, այլ ոչ թե root shell-ից։ Root-ի իրավունքով հաջողությունը ոչինչ չի ապացուցում սովորական օգտվողի անցած ուղու մասին, և այդ երկու համատեքստերի տարբերությունը հենց այն է, ինչի մասին էր ձախողումը։
Ապա հաստատեք այն ցանցային գործողությունը, որի համար գոյություն ունի օգնականը։ Օգնականը, որը սկսում է, բայց չի կարող կարգավորել ինտերֆեյսը, խնդիրը տեղափոխել է մեկ փուլ առաջ, ոչ լուծել։
findmnt -no TARGET,OPTIONS /home
getcap /usr/libexec/openvpn-helper 2>/dev/null; ls -l /usr/libexec/openvpn-helper
Գրանցեք միացման ընտրանքները և օգնականի սեփականությունը նույն նշումում։ Հակառակ դեպքում հաջորդ մարդը, ով կվերացնի այս խնդիրը, գաղտնագրման տեսությունը կկրկնի սկզբից։