Վերադառնալ
Drop՝ root չպահանջող Linux ավազարկղ՝ gVisor աջակցությամբ
SiTech AI Team2 წთ. საკითხავი

Drop՝ root չպահանջող Linux ավազարկղ՝ gVisor աջակցությամբ

Drop-ը բաց կոդով Linux ավազարկղ է, որը ծրագրերն ու կոդ գրող գործակալներին մեկուսացնում է մեկանգամյա միջավայրերում։ Այն root չի պահանջում, կոնտեյների փոխարեն օգտագործում է արդեն տեղադրված դիստրիբուտիվը և կարող է աշխատել gVisor-ի user-space միջուկում։

Drop-ը բաց կոդով Linux ավազարկղ է, որը առանձին ծրագրերն ու կոդ գրող գործակալները մեկուսացնում է մեկանգամյա միջավայրերում՝ առանց կոնտեյներների անցնելու։ Նախագիծը հրապարակված է droprun.sh-ում, կոդը՝ GitHub-ում, իսկ Hacker News-ում այն հայտնվել է որպես Show HN գրառում։ Docker-ի ու Podman-ի լուծած խնդիրը Drop-ը լուծում է ավելի թեթև։

Մեկուսացում առանց root-ի

Աշխատանքային ընթացքը ոգեշնչված է Python-ի virtualenv-ից. ստեղծում ես միջավայր, մտնում ես դրա մեջ և սովորական աշխատում, բայց մեկուսացումն ապահովում է օպերացիոն համակարգը։ Drop-ը root չի պահանջում։ Յուրաքանչյուր միջավայր աշխատում է Linux-ի user namespace-ում՝ իր սեփական process, mount, network, IPC և cgroup namespace-ներով, և նախքան ծրագրի մեկնարկը Drop-ը հանում է user namespace-ի բոլոր capability-ները, ուստի պրոցեսը չի կարող կատարել bind mount-ի նման արտոնյալ գործողություններ։

Ամեն միջավայր ունի իր մշտական home պանակը, իսկ բուն home-ը թաքցված է։ Համակարգային պանակները հոսթից հասանելի են միայն կարդալու համար, /var-ը և /tmp-ը մասնավոր են, իսկ localhost-ում լսող ծառայություններին հասանելիությունը լռելյայն արգելված է. ցանցը կառավարում է pasta-ն։

Ինչի համար է

Հիմնական կիրառությունը կոդ գրող գործակալներն են։ Գործակալին առանց թույլտվության հարցումների գործարկելը ավելի քիչ ռիսկային է, երբ սահմանները դնում է ոչ թե մոդելը, այլ օպերացիոն համակարգը. սխալմամբ կատարված rm -rf ~-ը չի դիպչում իրական home պանակին, իսկ ~/.ssh-ի վրա ուղղված prompt injection-ը ոչինչ չի գտնում։ Երկրորդ կիրառությունը երրորդ կողմի ծրագրերն են. PyPI-ից կամ npm-ից տեղադրված փաթեթի չարամիտ կամ վարակված թողարկման ազդեցությունը մնում է ավազարկղի ներսում։

Ի տարբերություն կոնտեյներային շարժիչների՝ Drop-ը օգտագործում է արդեն տեղադրված դիստրիբուտիվը. հավաքելու image և կոնտեյների կարգավորում չկա։ TOML կոնֆիգուրացիան որոշում է, թե որ ֆայլերը, պանակներն ու տեղական ծառայությունները բացվեն, և բոլոր միջավայրերը լռելյայն կիսում են ընդհանուր բազային կոնֆիգը։

gVisor և տեղադրում

Կա երկու runtime. լռելյայն native-ը ծրագրերը գործարկում է անմիջապես հոսթի միջուկում, իսկ gvisor-ը դրանք լրացուցիչ աշխատեցնում է gVisor-ի user-space միջուկում, որպեսզի համակարգային կանչերը ուղիղ չհասնեն հոսթի միջուկին։ Անհրաժեշտ է տեղադրված runsc, իսկ ռեժիմն ընտրվում է TOML ֆայլում (runtime = "gvisor") կամ առանձին հրամանի համար։ gVisor-ը ավելացնում է համակարգային կանչերի ծախս և ամբողջությամբ համատեղելի չէ սովորական Linux միջուկի հետ։ Տեղադրման համար պետք է passt/pasta փաթեթը. Ubuntu 24-ում AppArmor-ի պրոֆիլը պետք է թույլ տա drop-ի բինարին օգտվել user namespace-ից, իսկ Fedora-ում պետք է ընդլայնել SELinux-ի քաղաքականությունը, որպեսզի pasta-ն կարողանա բացել namespace-ի ֆայլերը։

Սահմանափակումներ

Drop-ը տերմինալային գործիք է. գրաֆիկական ծրագրերը լռելյայն չեն աշխատում, X socket-ների բացումը չափազանց լայն իրավունքներ կտա, իսկ ձայնի նվագարկումը կամ ձայնագրումը հնարավոր չէ։ setuid ծրագրերը ընդհանրապես չեն գործարկվում, իսկ այն ծրագրերը, որոնք իրենք են կախված user namespace-ներից՝ Podman-ը կամ Snap-ով տեղադրված հավելվածները, չեն աջակցվում։

SSiTech

SiTech — AI-ով հզորացված վեբ մշակում

Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։