VPN կոճակը պահանջում է sudo՝ նեղացրեք կանոնը, ստուգեք քաղաքականությունը
Աշխատասեղանի կոճակը պատճառ չէ առանց գաղտնաբառի root տալու։ Ստուգեք, թե արդյոք ցանցի կառավարիչը կարող է դա ինքն անել, նեղացրեք մեկ հրաման, ապա ստուգեք ամբողջ sudo քաղաքականությունը։
VPN կոճակը աշխատում է ադմինիստրատորի մոտ և ձախողվում է մյուսների մոտ, այնպես որ ինչ-որ մեկը տող է ավելացնում sudoers-ում։ Այդ տողը սովորաբար ապրում է ավելի երկար, քան այն խնդիրը, որի համար նախատեսված էր, և հաճախ ավելի շատ իրավունք է տալիս, քան կոճակին պետք է։ Նախքան քաղաքականությունը խմբագրելը ստուգեք, թե արդյոք աջակցվող միացման սեփականատերը կարող է արդեն կատարել աշխատանքը։ Ներքևի երեք պայմանները որոշում են, թե արդյոք sudo-ն ընդհանրապես ներգրավված է։
Պայման 1՝ աջակցվող սեփականատերը կարող է դա անել առանց sudo-ի
Linux-ի աշխատասեղանների մեծ մասում ցանցի կառավարիչն արդեն սեփականատերն է VPN միացումների, և դրա լիազորումն անցնում է polkit-ով, ոչ թե sudo-ով։ Այն օգտագործողը, ում թույլատրված է միացում բարձրացնել, կարող է դա անել հրամանի տողից առանց որևէ root կանոնի։ Ստուգեք, թե ինչ է թույլատրում կառավարիչը, նախքան ենթադրելը, որ կոճակին արտոնություն է պետք։ Եթե պատասխանը այո է, ապա sudoers-ի փոփոխությունը լուծում է մի խնդիր, որ գոյություն չունի։
nmcli connection show
nmcli connection up "Work VPN"
Եթե կառավարիչը մերժում է, կարդացեք ինչու՝ բացակայող polkit կանոն, այլ օգտագործողի պատկանող միացում կամ պրոֆիլ, որը պահված է այնտեղ, որտեղ օգտագործողը չի կարող կարդալ այն։ Դրանցից յուրաքանչյուրն ունի sudo կանոնից ավելի նեղ աջակցվող լուծում։ Արտոնությունների բարձրացումը վերջին միջոցն է, ոչ առաջինը։
Պայման 2՝ կանոնը նշում է մեկ կատարվող ֆայլ և դրա արգումենտները
Եթե sudo-ն իսկապես անհրաժեշտ է, կանոնը պետք է նշի ճշգրիտ հրամանը և, որտեղ հնարավոր է, այն արգումենտները, որոնք կարող է օգտագործել։ Կանոնը, որը թույլ է տալիս օգտագործողին գործարկել փաթաթող սկրիպտ, ապահով է միայն այնքանով, որքանով ապահով են այդ սկրիպտի իրավունքները, քանի որ օգտագործողը կարող է խմբագրել այն, ինչ root-ը կկատարի։ Հրամանից հետո նիշքային հատուկ նշան ունեցող կանոնը նույն խնդիրն է ավելի կարճ ձևով։
sudo -l -U alice
ls -l /usr/local/sbin/vpn-up
Ստուգեք հրամանի շղթայի յուրաքանչյուր ուղի՝ բինարը, այն սկրիպտը, որին այն կանչում է, կոնֆիգուրացիայի ֆայլը, որը նա կարդում է, և նրանց միջև եղած ցանկացած պանակ։ Եթե դրանցից որևէ մեկը գրելի է օգտագործողի համար, ապա սահմանափակված կանոնը գործնականում անսահմանափակ root է։ Արգումենտները նույնպես կարևոր են, քանի որ կոնֆիգուրացիայի ուղի ընդունող հրամանը կարելի է ուղղել օգտագործողի կողմից վերահսկվող ֆայլի։ Կանոնը գրեք գործողության համար, ոչ թե կոճակի։
Կանգնեք, եթե հրամանը աշխատելու համար պահանջում է օգտագործողի կողմից վերահսկվող ֆայլ։ Այն ժամանակ ձևավորումը սխալ է, և ոչ մի sudoers շարահյուսություն այն ապահով չի դարձնի։
Պայման 3՝ ամբողջ քաղաքականությունը վերլուծվում է, ոչ միայն ձեր տողը
Ստուգեք այն խմբագրիչով, որը կողպում է ֆայլը և ստուգում շարահյուսությունը, և ստուգեք հավաքված քաղաքականությունը, ոչ թե հատված։ Ֆայլը, որն ինքնուրույն վերլուծվում է, դեռ կարող է խախտել ընդգրկման կարգը կամ կրկնօրինակել կանոնն այնպես, որ փոխի վարքը։visudo ձեռնարկ նկարագրում է և՛ կողպող խմբագրիչը, և՛ այստեղ օգտագործվող միայն ստուգման ռեժիմը։
sudo visudo -c
sudo visudo -cf /etc/sudoers.d/vpn-launcher
Ստուգումը ձախողման դեպքում հաղորդում է ֆայլը և տողը, և հենց այդ հաշվետվությունն է օգտակար մասը։ Ուղղեք նախատեսված փոփոխությունը խմբագրիչի միջոցով, այլ ոչ թե բռնի պահեք հայտնի սխալը, որովհետև կոտրված քաղաքականությունը կարող է միանգամից կողպել բոլոր ադմինիստրատորներին։ Ընդգրկման պանակի ֆայլերին նույնպես անհրաժեշտ են ձեռնարկի պահանջած սեփականությունը և ռեժիմը, այլապես դրանք կանտեսվեն կամ կմերժվեն։ Շարահյուսությունը միայն առաջին դարպասն է. անցնելուց հետո նորից կարդացեք կանոնը և հարցրեք, թե ինչ է այն իրականում թույլատրում։
Կանգնեք, եթե փոփոխությունը աշխատեցնելու միակ միջոցը շարահյուսության ստուգումն անջատելն է։ Դա քաղաքականություն չէ, դա վերագործարկման սպասող վթար է։
Վերականգնում՝ պահեք դեռ աշխատող սեսիա
Նախքան պահելը համոզվեք, որ լիազորված ադմինիստրատիվ սեսիան արդեն բաց է, և որ մեքենա մուտքի երկրորդ ուղի գոյություն ունի։ sudoers-ի սխալը կարող է խլել այն ուղղելու ձեր ունակությունը, և աշխատասեղանի կոճակը այդ ռիսկի արժեքը չունի։ Եթե sudo-ն արդեն կոտրված է, օգտագործեք համակարգի փաստաթղթավորված վերականգնման ուղին, այլ ոչ թե ինքներդ հորինեք մեկը։
sudo -n true
id
pkexec-ի նման այլընտրանքները կախված են իրենց տեղակայումից և քաղաքականությունից, ուստի երաշխավորված երկրորդ root հարցում չեն։ Տեղական լիազորումը առանձին պահեք նաև VPN գաղտնիքի տրամադրումից. sudo կանոնը չի կարող բացել բացակայող գաղտնիքների գործակալ և չի բավարարում դարպասի MFA-ն։ Ուղղումից հետո փորձարկեք սովորական հաշիվը՝ կատարելով միայն նախատեսված գործողությունը, ապա օգտագործեք կառավարչի սովորական կառավարումը։
Որոշումն ավարտվում է, երբ կարող եք ասել, թե որ պայմանն արդարացրեց sudo-ն, ինչ է նշում կանոնը, որ ամբողջ քաղաքականությունը վերլուծվում է, և ինչպես կվերականգնեիք, եթե ոչ։ Արտոնյալ գործարկիչը, որն արժենում է ձեր ադմինիստրատիվ հասանելիությունը, վատ գործարք է, և սովորաբար հնարավոր է խուսափել դրանից։