նոր թողարկում գործիքների հավաքածուի , նախատեսված է Linux-ում մեկուսացված միջավայրերի աշխատանքն կազմակերպելու համար և աշխատում է ոչ իրավասու օգտվողների համար կիրառվող մակարդակում։ Իրականում Bubblewrap-ը օգտագործվում է Flatpak նախագծի կողմից որպես շերտ՝ փաթեթներից գործարկվող ծրագրերի մեկուսացման համար։ Ծրագրի կոդը գրել է C լեզվով և ելույթ շնորհիվ LGPLv2+ լիցենզիայի։
Մեկուսացման համար օգտագործվում են ավանդական Linux-յան կոնտեյներային վիրտուալացման տեխնոլոգիաները, հիմնված cgroups-ի, անվանումների տարածքների (namespaces), Seccomp-ի և SELinux-ի օգտագործման վրա։ Կոնտեյները պարամետրավորելու համար Bubblewrap-ը запускается root իրավունքներով (executable file with suid flag) և՝ իրավունքները կրճատվում են կոնտեյների իի մեջբերումից հետո։
Օգտագործող անվանումների տարածքների (user namespaces) ակտիվացումը համակարգում, որը թույլ է տալիս կոնտեյներներում օգտագործել առանձին ինքնատիպ իրողություն, աշխատանքի համար չի պահանջվում, քանի որ默认情况下 չի աշխատում բազմաթիվ դիստրիբյուտորներում (Bubblewrap-ը կազմված է որպես սահմանափակ suid իրականացման ենթաբառի user namespaces հնարավորությունների — օգտագործելով CLONE_NEWUSER և CLONE_NEWPID ռեժիմներ բոլոր օգտվողների և գործընթացների անվանումները առանձնացնելու համար։ Ավելորդ համապարփակության համար, Bubblewrap-ի կառավարած ծրագրերը запускаются PR_SET_NO_NEW_PRIVS ռեժիմում, որն արգելափակում է նոր իրավունքների ստացումը, օրինակ՝ setuid դրանով ներկա լինելու դեպքում։
Ֆայլային համակարգերի մակարդակում մեկուսացումը իրականացվում է ներարկելով նոր կետերի ձեւաչափի տարածքները (mount namespace), որտեղ tmpfs օգտագործելով ստեղծվում է դատարկ արմատային բաժին։ Այս բաժնում հնարավորության դեպքում միացվում են արտաքին FS բաժինները «mount —bind» ռեժիմով (օրինակ ՝ c «bwrap —ro-bind /usr /usr» օպցիաիսկ բաժինը /usr փոխանցվում է հիմնական համակարգից միայն անվճար մեկուսացվող ռեժիմով)։ Մանրամասները սահմանափակվում են loopback-հանդիպակների հասանելիությամբ՝ ցանցի ջոկատը մեկուսացնելով CLONE_NEWNET և CLONE_NEWUTS դրոշների միջոցով։
Ակնհայտ տարբերություն, որը նման ծրագրից
Firejail արժանի մակարդակում .
Նոր թողարկումը առանձնանում է օգտագործողի Identifiers (user namespaces) և գործընթացների (pid namespaces) առկա տարածքների միացման աջակցությամբ: Տարածքների միացումը կառավարելու համար ավելացվել են «—userns», «—userns2» և «—pidns» դրոշները:
Այս հնարավորությունը չի աշխատում setuid ռեժիմում և պահանջում է առանձին ռեժիմի կիրառություն, որը կարող է աշխատել առանց root իրավունքների ստացման, սակայն անհրաժեշտ է ակտիվացում:
օգտվողի namespaces համակարգում (նորմալ դեպքում անջատված է Debian և RHEL/CentOS-ում) և չի исключает հնարավորությունը: օգտագործողի namespaces սահմանափակումների համար: Նոր Bubblewrap 0.4 հնարավորություններից ցանկանում ենք նշել նաև, որ այն կարող է կառուցվել musl C գրադարանից glibc-ի փոխարեն և աջակցում է namespaces-ի մասին տեղեկությունների պահպանմանը JSON ձևաչափի վիճակագրական ֆայլում:
Ընտանիք: opennet.ru
