
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-ով տեղադրված հավելվածները, չեն աջակցվում։
SiTech — AI-ով հզորացված վեբ մշակում
Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։