Maran

19 սեպտեմբեր 2026

Ինչու գործակալը shell-հրամաններ չի ընդունում

Մեկ նախագծային որոշում, որը Maran-ում որոշեց մնացած ամեն ինչ՝ root դեմոնն ընդունում է տիպավորված գործողություններ և ոչ մի shell-տող, և ինչ է դա արժենում։

Ցանկացած կառավարման վահանակ ունի նույն ձևը՝ այն, ինչի վրա մարդը սեղմում է, և այն, ինչ root իրավունքներով անում է աշխատանքը։ Հետաքրքիր հարցն այն է, թե ինչ է փոխանցվում նրանց միջև։

Սովորական պատասխանը հրամանի տողն է։ Այն ամենաարագն է հավաքելու և ամենադժվարը՝ անվտանգ պահելու, որովհետև հաճախորդի կողմից կառավարվող յուրաքանչյուր արժեք՝ դոմեն, բազայի անուն, ֆայլի ուղի, ի վերջո հայտնվում է տողում, որը կվերլուծի shell-ը։ Դա մեկ անգամ ճիշտ անելը հեշտ է։ Ամենուր, ընդմիշտ, մինչ վահանակն աճում է՝ ահա դրան ոչ ոք չի հասցնում։

Ինչ ենք անում փոխարենը

Maran-ի root դեմոնը ընդունում է անվանված գործողություններ՝ տիպավորված և ստուգված արգումենտներով, և ուրիշ ոչինչ։ Չկա գործողություն, որը ընդունում է գործարկելու հրաման։ Դոմենը չի պաշտպանվում կարգավորման ֆայլ ընկնելուց առաջ․ այն ստուգվում է որպես դոմեն, այսինքն՝ տառեր, թվեր, գծիկներ և կետեր, ուստի այնտեղ տողի փոխադրման նիշ չկա, որ ավարտի մեկ դիրեկտիվը և սկսի կանչողի ընտրած մյուսը։

Գործնական արդյունքն այն է, որ այն բաների բազմությունը, որոնք կարելի է ստիպել անել դեմոնին, վերջավոր է, գրված և ստուգելի։ Պայմանագրում չգոյություն ունեցող գործողությունը հնարավոր չէ պահանջել՝ որքան էլ հնարամիտ լինի խնդրանքը։

Ինչ է դա արժենում

Յուրաքանչյուր նոր հնարավորություն դառնում է պայմանագրի փոփոխություն, ոչ թե նոր տող։ Դա ավելի դանդաղ է, և գիտակցաբար․ գործողություն ավելացնելը նշանակում է որոշել, թե որոնք են նրա արգումենտները, ինչն է համարվում վավեր և ինչ է լինում, երբ հոսթը համաձայն չէ՝ մինչև որևէ բան ուղարկելը։

Դա նաև բացառում է հնարավորությունների մի ամբողջ դաս, որը վահանակը կարող էր առաջարկել՝ «գործարկիր այս հրամանն իմ փոխարեն»։ Մենք սա ճիշտ փոխզիջում ենք համարում ծրագրի համար, որը պահում է root-ը սերվերի վրա, որտեղ ապրում են ուրիշի հաճախորդները։