Léim go dtí an príomhábhar
OpenAI

Ag tógáil bosca gainimh sábháilte agus éifeachtach chun Codex a chumasú ar Windows

Le David Wiesen, Ball den Fhoireann Theicniúil

Ag lódáil…

Nuair a ghlac mé páirt i bhfoireann innealtóireachta Codex i Meán Fómhair 2025, ní raibh feidhmiú bosca gainimh ag Codex do Windows, rud a chiallaigh go raibh iallach ar úsáideoirí Windows rogha a dhéanamh idir dhá rogha faoi bhun caighdeáin agus iad ag úsáid gníomhairí códaithe OpenAI:

  1. Beagnach gach ordú (fiú léamha) a theastaigh ó ghníomhaire códaithe a rith a cheadú, rud atá neamhéifeachtúil agus míchompordach. Buntáiste mór a bhaineann le Codex a úsáid is ea nach gá duit an obair leadránach ar fad a dhéanamh tú féin.
  2. Mód Rochtain Iomlán á Chumasú: ag ligeadh do Codex gach ordú a rith gan cheadú ná srianta, rud a bhaineann bac gan mhaoirseacht.

Ritheann Codex, ár ngníomhaire códaithe, ar ríomhairí glúine forbróirí—bíodh sé sin tríd an CLI, an eisínteacht IDE, nó an aip ríomhaire deisce. Bainistíonn sé comhrá idir duine ag méarchlár agus samhail atá ag rith sa néal chun tátal a láimhseáil.

Ritheann Codex le ceadanna fíorúsáideora de réir réamhshocraithe, rud a chiallaíonn gur féidir leis gach rud atá an t-úsáideoir in ann a dhéanamh. Tá sé seo cumhachtach agus d’fhéadfadh sé a bheith contúirteach. D’fhéadfadh an tsamhail códaithe a rá leis an gcreat tástála orduithe a rith go háitiúil, ó thástálacha a rith go comhad a léamh nó a chur in eagar, go brainse Git a chruthú, mar sin féachann mód réamhshocraithe Codex leis an gcothromaíocht cheart a aimsiú idir éifeachtacht agus sábháilteacht. Ligeann an mód réamhshocraithe seo do Codex comhaid a léamh beagnach áit ar bith agus comhaid a scríobh laistigh de do spás oibre (is é sin, an chomhadlann as a bhfuil Codex á rith agat), gan rochtain idirlín mura sonraíonn tú gur mian leat í. Chun an srianadh uathoibríoch seo ar chomhaid a scríobh agus rochtain a fháil ar an líonra laistigh de theorainneacha sábháilte a bhaint amach, teastaíonn timpeallacht sainbhosca ó Codex a fhorfheidhmíonn na srianta seo go hiarbhír.

Is timpeallacht forghníomhaithe srianta é bosca gainimh . Nuair a úsáideann forbróir Codex, seolann córas oibriúcháin a ríomhaire ordú le ceadanna laghdaithe, agus cuirtear na srianta sin ar aghaidh trí chrann an phróisis. Cuirtear gach ordú Codex i mbosca gainimh ón tús, agus fanann gach próiseas sliochta laistigh den teorainn chéanna.

Léaráid a thaispeánann teorainneacha leithlisithe ar leibhéal an chórais oibriúcháin i mbosca gainimh Codex.

Tá gnéithe leithlisithe de dhíth ar Codex, arna bhforfheidhmiú ag córas oibriúcháin an ríomhaire, chun bosca gainimh éifeachtach a chur i bhfeidhm. Cuireann roinnt córas oibriúcháin fóntais ar fáil a dhéanann é seo go maith (m.sh. Seatbelt ar macOS, seccomp nó bubblewrap ar Linux); áfach, ní chuireann Windows an cineál cumais seo ar fáil mar ghné ionsuite faoi láthair.

Chun Codex a dhéanamh chomh sábháilte agus chomh taitneamhach le húsáid ar Windows agus atá sé cheana féin i ngach áit eile, bhí orainn ár mbosca gainimh féin a chur i bhfeidhm.

Áit nach raibh na huirlisí Windows a bhí ann cheana éifeachtach

Cuireann Windows roinnt uirlisí agus bunghnéithe ar fáil le haghaidh aonraithe. Cé nár chomhlíon aon cheann acu ár riachtanais go hiomlán, scrudaíomar roinnt réiteach féideartha—eadhon, AppContainer, Windows Sandbox, agus lipéadú Mandatory Integrity Control.

AppContainer

  • Cad é: Is bosca gainimh dúchasach Windows é AppContainer, samhail aonraithe bunaithe ar chumais atá tógtha le haghaidh aipeanna a bhfuil a fhios acu roimh ré cad is gá dóibh rochtain a fháil air.
  • Cén fáth: Tarraingteach toisc go dtugann sé fíortheorainn OS, in ionad srianta de chineál “iarracht is fearr”.
  • Cén fáth nach ea: Ní aip aonair le raon feidhme an-chúng é Codex. Tiomáineann sé sreafaí oibre forbróra neamhshrianta: sliogáin, Git, Python, bainisteoirí pacáistí, uirlisí tógála, agus cibé dénárthaí eile a chinneann an gníomhaire a theastaíonn uaidh. Go praiticiúil, d’fhág sé sin nach raibh AppContainer oiriúnach don fhadhb. Ba leithlisiú láidir a bhí ann, ach d’aicme ualaí oibre i bhfad níos cúinge ná “lig do ghníomhaire feidhmiú ar nós forbróra.”

Bosca Gainimh Windows

  • Céard é: Is VM éadrom indiúscartha é Windows Sandbox ó Microsoft. Faigheann tú deasc úr Windows le teorainn láidir aonraithe, agus imíonn cibé rud a dhéanann tú ann nuair a chríochnaíonn an seisiún.
  • Cén fáth: Suimiúil ar chúiseanna soiléire—tá sé i bhfad níos comhoiriúnaí le bogearraí treallacha ná AppContainer, agus ó thaobh na slándála de is bosca i bhfad níos láidre é.
  • Cén fáth nach ea: Ní mór do Codex gníomhú go díreach ar sheiceáil amach iarbhír an úsáideora, ar a uirlisí agus ar a thimpeallacht, seachas laistigh de dheasc indiúscartha ar leith a mbeadh socrú agus droicheadú óstaigh/aoi de dhíth uirthi. Bhí fadhb bhunúsach leis an táirge aige freisin: níl Windows Sandbox ar fáil fiú ar SKUanna Windows Home.

Lipéadú Éigeantach um Rialú Ionracais (MIC)

  • Cad: Tá coincheap ag Windows ar a dtugtar “leibhéil shláine,” amhail íseal, meánach agus ard, a chinneann cé chomh mór is a bhfuil muinín ag an gcóras as réada agus próisis. Is é an riail bhunúsach ná nach féidir le próiseas le hionracas níos ísle scríobh chuig réad a bhfuil leibhéal ionracais níos airde aige, fiú má cheadódh an gnáth-ACL é murach sin. Mar shampla, caitear le próiseas íseal-ionracais mar cheann nach bhfuil chomh hiontaofa, agus cuireann Windows cosc air scríobh chuig gnáth-oibiachtaí meán-ionracais, mura ndéantar na hoibiachtaí sin a athlipéadú go sainráite chun é sin a cheadú.
  • Cén fáth: Bhí cuma ghalánta ar MIC ar pháipéar—Codex a rith le sláine íseal, fréamhacha inscríofa a athlipéadú mar shláine íseal, agus ligean do Windows cosc ar scríobh a chur i bhfeidhm i ngach áit eile. Bheadh cosán neamh-riaracháin againn dá bharr sin le fíor-mheicníocht oibriúcháin taobh thiar de.
  • Cén fáth nach ea: Cosúil le ACLanna, athraíonn lipéid shláine fíorchóras comhad an óstaigh, agus sa chás seo, tá an t-athrú séimeantach thar a bheith fairsing. Ní chiallaíonn marcáil spáis oibre mar cheann ar shláine íseal “is féidir le Codex scríobh anseo” amháin. Ciallaíonn sé gur féidir le próisis íseal-ionracais go ginearálta scríobh ann. Ar mheaisín fíor-fhorbróra, déanann sé sin seiceáil amach iarbhír an úsáideora ina shlogaide íseal-ionracais don óstach, rud atá i bhfad níos rioscaí ná ACLanna atá dírithe go cúramach a dheonú do dhearadh amháin bosca gainimh. Fiú má leanann uirlisí forbróra meán-ionracais ag feidhmiú, tá samhail iontaoibhe bhunúsach an spáis oibre athraithe ar bhealach atá deacair a shrianadh agus níos deacra fós a chosaint.

Tar éis dúinn a mheas nach n-éireodh le haon cheann de na roghanna, thosaíomar ar ár réiteach féin a dhearadh chun eispéireas maith Codex a chur ar fáil d’úsáideoirí Windows.

An chéad fhréamhshamhail: an "bosca gainimh neamhardéirime"

D’úsáid ár gcéad fhréamhshamhail oibre meascán de choincheapa agus d’uirlisí Windows chun an aonrú riachtanach a chur i bhfeidhm. Ó thús, ba é sprioc amháin ná go n-oibreodh sé seo gan ardú pribhléidí a bheith riachtanach, rud a chiallaíonn nach mbeadh ar Codex leid a thabhairt don úsáideoir chun pribhléidí riarthóra a iarraidh díreach chun an bosca gainimh a chumrú nó a rith. Chiallaigh sé sin a fháil amach an chaoi teorainneacha réasúnta a chur ar dhá rud: scríobh comhaid agus rochtain líonra.

Scríobh chuig comhaid a theorannú

Mura gcuirfimis teorainn ar bith le scríobh chuig comhaid, bheadh saincheist sábháilteachta againn. Dá gcuirfimis teorainn ró-mhór le scríobh chuig comhaid, dhéanfadh an sainbhosca dochar do tháirgiúlacht úsáideoirí, mar go mbeadh air cead leanúnach a iarraidh. Chun an fhadhb seo a réiteach, bhíomar ag brath ar dhá bhunchloch thábhachtacha de chuid Windows: SIDs agus téacschomharthaí srianta ó thaobh scríofa.

Ligeann SIDs dúinn aitheantas a thabhairt don bhosca gainimh

Is éard is SID, nó aitheantóir slándála, ná an t-aitheantas a cheanglaíonn Windows le ceadanna. Tá SID ag gach úsáideoir, tá SIDanna ag grúpaí, agus faigheann fiú seisiún logála isteach aonair a SID féin. Mar shampla, d’fhéadfadh SID cosúil le S-1-5-5-X-Y a bheith ag seisiún reatha atá logáilte isteach. D’fhéadfadh gurb é S-1-5-32-544 an SID atá sannta don ngrúpa riarthóirí áitiúla.

Ligeann Windows duit freisin SIDanna sintéiseacha a chruthú nach mbaineann le fíorúsáideoir ach ar féidir leo a bheith le feiceáil fós in ACLanna (liostaí rialaithe rochtana), a shainíonn cé atá in ann comhaid nó eolairí ar leith a léamh, a scríobh nó a fhorghníomhú. Fágann sé sin gur bun-eilimint úsáideach iad SIDanna dár mbosca gainimh: is féidir linn SIDanna a chruthú go heisiach lena n-úsáid ag bosca gainimh Codex, gan cur isteach ar aon rud eile ar an ríomhaire.

Cuireann téacschomharthaí srianta ó thaobh scríofa teorainn leis na háiteanna ar féidir le Codex comhaid a mhodhnú

Is oibiachtaí slándála iad téacschomhartha próisis in Windows a shainíonn céannacht agus pribhléidí do phróiseas atá ag rith. Cinneann siad na gníomhartha is féidir le próiseas a dhéanamh. Is cineál ar leith de théacschomhartha próisis é téacschomhartha atá srianta scríofa a chuireann ar Windows seiceáil rochtana breise a dhéanamh ar oibríochtaí scríofa.

Chun go n-éireoidh le hoibríocht scríofa, ní mór go n-éireoidh le dhá sheiceáil:

  1. Ní mór cead a bheith ag an ngnáthaitheantas úsáideora (an téacschomhartha “úinéir”) é a dhéanamh
  2. Ní mór rochtain a dheonú freisin do SID amháin ar a laghad i liosta SIDanna srianta an téacschomhartha
Léaráid dar teideal 'Éilíonn bosca gainimh rochtain gnáthúsáideora agus rochtain SID sandbox-write araon'.

Go praiticiúil, lig na seiceálacha seo dúinn ACLanna a úsáid chun a shainiú go díreach cá bhféadfadh an bosca gainimh an córas comhad a mhodhnú, rud a thairg an mionsonraíocht a bhí ag teastáil uainn maidir le hoibríochtaí scríbhneoireachta.

Le SIDanna agus téacschomharthaí srianta scríofa, d’oibrigh ár mbosca gainimh neamhardéirime mar seo:

  1. Chruthaigh an socrú sainbhosca SID sintéiseach darb ainm sandbox-write.
  2. Tugadh rochtain scríofa, rite agus scriosta don SID sandbox-write ar
    1. An t-eolaire oibre reatha
    2. Aon writable_roots breise atá cumraithe i config.toml.
  3. Shéan cumraíocht an bhosca gainimh go sainráite rochtain scríofa don SID céanna sin ar shuíomhanna “inléite amháin laistigh de shuíomhanna in-inscríofa” amhail:
    1. <cwd>/.git
    2. <cwd>/.codex
    3. <cwd>/.agents
  4. Sheol Codex orduithe faoi théacschomhartha srianta scríbhneoireachta a bhfuil Gach Duine, an SID seisiúin atá logáilte isteach faoi láthair, agus an SID sintéiseach sandbox-write san áireamh ina liosta SID srianta.

D’éirigh leis an sreabhadh seo teorainn a chur le scríobh chuig comhaid go héifeachtach, agus bhí cuma mhaith air. Anois bhí réiteach de dhíth orainn chun rochtain líonra an bhosca gainimh a shrianadh.

Rochtain líonra a theorannú

Is cuid thábhachtach den bhosca gainimh é rochtain ar an líonra a theorannú; murach sin, d’fhéadfadh cód mailíseach sonraí a bhaint den mheaisín agus iad a sheoladh chuig an Idirlíon. Ós rud é gur theastaigh uainn ceanglas um ardú pribhléidí a sheachaint, ní raibh ach roghanna teoranta againn chun bac láidir a chur ar thrácht líonra. De ghnáth, níorbh fhéidir na huirlisí a theastaigh uainn a úsáid, cosúil le Windows Firewall, a shuiteáil gan ceadanna riarthóra.

Gan Windows Firewall mar rogha, chuireamar teorainn leis an méid a d’fhéadfaimis a rialú. Rinneamar iarracht an timpeallacht fhochórais a chur ar bun sa chaoi go dteipfeadh sí i riocht dúnta i gcás na gcineálacha uirlisí líonraithe a úsáideann forbróirí i ndáiríre, ionas go dteipfeadh ar orduithe Git, suiteálaithe pacáistí, srl., sa sainbhosca agus go mbeadh ar an úsáideoir aon oibríochtaí a bhaineann leis an idirlíon a cheadú. Ba é an smaoineamh ná na bealaí éalaithe soiléire a nimhiú: trácht atá feasach ar phroxy a sheoladh chuig deireadhphointe marbh, a chur ar iompar HTTP(S) Git an rud céanna a dhéanamh, agus a chur ar Git thar SSH teip láithreach. Anuas air sin, chuireamar eolaire beag denybin roimh PATH agus d’athordaíomar PATHEXT ionas go réiteofaí scripteanna stub SSH agus SCP roimh na fíorchomhaid dhénártha.

Mar shampla, seo cuid de na socruithe athraithe timpeallachta sonracha a d’úsáideamar chun rochtain líonra a theorannú:

  • HTTPS_PROXY=http://127.0.0.1:9
  • ALL_PROXY=http://127.0.0.1:9
  • GIT_HTTPS_PROXY=http://127.0.0.1:9
  • NO_PROXY=óstacháitiúil,127.0.0.1,::1
  • GIT_SSH_COMMAND=cmd /c exit 1
Léaráid a thaispeánann ailtireacht ardaithe an bhosca gaineamhaithe le rialacha balla dóiteáin agus úsáideoir Windows tiomnaithe.

D’aimsigh sé sin go leor den ghnáth-thrácht faoi thiomáint uirlisí, ach ní raibh sé fós ach de chineál comhairleach amháin. D’fhéadfadh próiseas neamhaird a dhéanamh den timpeallacht, PATH a sheachaint, nó soicéid a oscailt go díreach—ró-chontúirteach.

Bhí comhbhabhtáilte ag baint leis an gcur chuige neamhardéirime

Mar is amhlaidh le haon chur i bhfeidhm bogearraí spéisiúil, bhí roinnt buntáistí agus míbhuntáistí ag an gcéad fhréamhshamhail. Cé gur chomhlíon sé an cúram gan ach cúpla cumas caighdeánach Windows, gur cheadaigh sé scríobh an-sainráite agus mionghrádaithe chuig an gcóras comhad, agus gur rith sé neamhardaithe—rud a laghdaigh an gá d’úsáideoirí glacadh le leideanna iomarcacha um ardú pribhléidí nó a bheith ina riarthóirí ar a meaisíní áitiúla—bhí fíor-mhíbhuntáistí áirithe ag baint leis, agus dhícháiligh cuid acu é ó bheith ina dhearadh deiridh againn:

  • Luas an chumraithe: Is féidir le cur i bhfeidhm ACLanna spáis oibre a bheith costasach, ag brath ar thopolaíocht eolaire an spáis oibre.
  • Lorg: Chuireamar ACLanna fíora i bhfeidhm ar chóras an fhorbróra, cé nach bhfuil an lorg thar a bheith ionrach toisc go mbaineann na ACLanna a cuireadh i bhfeidhm go léir le SID sintéiseach sainchruthaithe nach n-úsáideann ach an timpeallacht bhosca gainimh.
  • Séimeantaic atá deacair a athrú: Ciallaíonn an spleáchas ar liostaí rialaithe rochtana (ACL) le haghaidh srianta bunaithe ar chomhaid go bhfuil sé costasach agus casta séimeantaic an bhosca gainimh a athrú. Ach ar macOS, is féidir linn an chaoi a nginimid an comhad .sbpl a úsáidtear chun Seatbelt a chumrú a athrú go dinimiciúil, d’fhéadfadh oibríocht mhall agus dhian a bheith ag teastáil ón mbosca gainimh Windows chun ACLanna a choigeartú.
  • Tá cosaint líonra lag. Mar a luadh cheana, bhí sé “comhairleach,” is cinnte go seachnódh roinnt clár a chuir a gcruach líonraithe féin i bhfeidhm é, agus níor dearadh é chun seasamh i gcoinne cód naimhdeach.

Is gné dhílis de chur chun feidhme saincheaptha bosca gainimh atá sách solúbtha do shreafaí gníomhairí iad na chéad trí shaincheist. Bhí an scéal maidir le cur an líonra faoi chois difriúil, áfach.

Tá sochtadh líonra ró-thábhachtach

Chomh maith leis an bhfíric gur féidir le gníomhaire mailíseach an cosc líonra bunaithe ar an timpeallacht a sheachaint go héasca, d’fhéadfadh go leor cód nó dénárthaí dea-intinne é a sheachaint freisin mura n-urramaíonn siad athróga seachfhreastalaí na timpeallachta, nó má chuireann siad a gcód líonra féin atá bunaithe ar shoicéid i bhfeidhm. Mheasamar gur leor an ghné seo chun infheistiú i mód bosca gainimh níos fearr a mheas.

Chun srianadh líonra níos fearr a bhaint amach, theastaigh uainn Windows Firewall a úsáid, rud a ligeann dúinn trácht líonra amach a bhlocáil d’úsáideoirí nó do chláir. Ar an drochuair, níorbh fhéidir linn riail fheidhmiúil balla dóiteáin a chruthú go héifeachtach a bhainfeadh leis na horduithe a sheol úim Codex amháin, ar chúpla cúis:

  • Ní cheadaíonn Windows riail balla dóiteáin a mheaitseáil le haitheantas neamhphríomha de chuid téacschomhartha shrianta. Ciallaíonn sé seo nárbh fhéidir linn riail balla dóiteáin a chur i bhfeidhm ar “aon téacschomhartha a bhfuil ár SID sintéiseach san áireamh ina liosta SIDanna srianta.”
  • Cé go bhféadfaimis riail bhalla dóiteáin a chruthú a mheaitseálann comhad dénártha ar leith, ní cheadaíonn sé sin dúinn ach teorainn a chur leis an líonrú do codex.exe féin. Ní bheadh sé infheidhme maidir leis na próisis a chuireann an gníomhaire ar bun ar son an úsáideora, amhail próisis Git nó Python.
  • Bhí toisí meaitseála eile an bhalla dóiteáin den chruth mícheart freisin. Bhí rialacha faoi raon úsáideora fós ag meaitseáil an fhíor-úsáideoir Windows sa dearadh neamhardaithe, ní hamháin an fo-phróiseas srianta. Bhí rialacha na gconairí clár ró-leathan: d’fhéadfaidís codex.exepython.exe a bhlocáil go ginearálta, ach ní an rith sonrach seo de python.exe a cuireadh i mbosca gainimh. Ba iad rialacha bunaithe ar phort nó ar sheoladh an polasaí mícheart ar fad freisin. Mar shampla, níor theastaigh uainn port 443 a bhlocáil; theastaigh uainn rochtain amach threallach a bhlocáil don chrann próiseas srianta sonrach seo.

Chun riail bhalla dóiteáin a chur i bhfeidhm go sonrach ar ár n-orduithe atá curtha i mbosca gainimh, b’éigean dúinn iad a rith mar phríomhaitheantas ar leith, seachas mar an úsáideoir “iarbhír”. Chuir an cur chuige seo ar chonair nua muid, conair inar mhaolaíomar ár srian “gan ardú”.

An t-athdhearadh: an "bosca gainimh ardéirime"

Éilíonn an chéad atriall eile den bhosca gainimh, arb é ár gcur chun feidhme reatha é, ceadanna riarthóra ardéirime le linn an chumraithe. Dá bhrí sin, tagraím dó mar “an sainbhosca ardaithe.” Ag an teorainn ina seolann Codex ordú ar an gcóras, tá cuma an chinn neamhardaithe ar an sainbhosca ardaithe. Ritheann sé fo-phróisis fós faoi théacschomhartha srianta—mar an gcéanna, téacschomhartha write_restricted leis an liosta srianta SID céanna de [Everyone, Logon, Synthetic]—áfach, ní hé úsáideoir iarbhír Windows príomhaitheantas an téacschomhartha seo a thuilleadh, ach duine de bheirt úsáideoirí áitiúla a chruthaigh Codex féin:

  • CodexSandboxOffline (an ceann a bhfuil rialacha balla dóiteáin dírithe air)
  • CodexSandboxOnline (an ceann nach bhfuil rialacha balla dóiteáin dírithe air)

Tá impleachtaí móra i ndáiríre ag an mionsonra seo, atá beag de réir cosúlachta, don bhosca gainimh, do na daoine ar féidir leo é a úsáid, agus do chastacht a chumraíochta agus a fhorghníomhaithe ag am rite.

Léaráid a thaispeánann sáruithe ar thimpeallacht líonra don sainbhosca neamhardaithe.

Tá sé cosúil ó thaobh amhairc leis an bhfréamhshamhail neamhardéirime, le rialacha balla dóiteáin agus úsáideoir Windows tiomnaithe tugtha isteach, a ritheann na horduithe i ndáiríre. (Mar sin féin, ciallaíonn tabhairt isteach na gcoincheap nua seo go bhfuil níos mó oibre socraithe le déanamh sula bhféadfaidh an bosca gainimh tosú ag rith agus ag cosaint orduithe.)

Tá céim chumraithe den chéad scoth de dhíth orainn anois

Bhí céim shimplí chumraíochta i ndearadh an bhosca gainimh gan pribhléidí ardaithe, ach bhí sí réasúnta beag:

  • Cruthaigh SID sintéiseach más gá
  • Cuir ACLanna i bhfeidhm don SID sintéiseach sandbox-write

Tá níos mó le déanamh ag an mbosca gainimh ardéirime, áfach.

  • Cruthaigh SID sintéiseach, mura bhfuil sé cruthaithe cheana
  • Cruthaigh na húsáideoirí bosca gainimh ar líne agus as líne, mura bhfuil siad cruthaithe cheana féin
  • Stóráil faisnéis aitheantais na n-úsáideoirí nuachruthaithe go háitiúil agus criptigh iad le Windows Data Protection API (DPAPI), in áit nach mbeidh úsáideoirí an bhosca gainimh in ann iad a léamh
  • Cruthaigh rialacha balla dóiteáin a chuirfidh bac ar gach rochtain líonra amach don úsáideoir CodexSandboxOffline, nó, má tá siad ann cheana féin, bailíochtaigh go bhfuil siad ceart

Tá castacht bhreise i gcéim an chumraithe. Táthar ag súil go mbeidh rochtain léite ag bosca gainimh Codex atá coibhéiseach le rochtain léitheoireachta an úsáideora Windows iarbhír. Sa sainbhosca neamhardaithe, mar arbh é an t-úsáideoir Windows príomh-SID an téacschomhartha shrianta, baineadh é seo amach. Mar sin féin, ní thagann sé sin saor in aisce nuair a bhíonn an príomhúsáideoir ina úsáideoir nua CodexSandbox . Deonóidh go leor eolairí ábhartha ar Windows ceadanna léite/rite do “Úsáideoirí Fíordheimhnithe”. Sampla suntasach amháin is ea eolaire próifíle an úsáideora. De réir réamhshocraithe, ní féidir le húsáideoirí Windows eolairí próifíle úsáideoirí Windows eile a léamh, mar sin ní éireodh fiú le léamh simplí comhaid i go leor cásanna.

Chun aghaidh a thabhairt air seo, chuireamar sraith eile le próiseas socraithe an tsainbhosca—sraith chun ACLanna read a dheonú d’úsáideoirí an tsainbhosca i gcás nach mbeadh ACLanna den sórt sin ann cheana. Mar shampla, chuig roinnt eolairí Windows a úsáidtear go coitianta:

  • C:\Users\<real-user>
  • C:\Windows\
  • C:\Program Files\
  • C:\Program Files (x86)\
  • C:\ProgramData\

Toisc gur liosta eolairí ar bhonn iarrachta is fearr é seo agus go bhféadfadh sé a bheith costasach ACLanna a shuiteáil ar gach ceann díobh, ritheann muid an loighic seo go haisioncronach ionas nach mbeidh ar chéim socraithe an bhosca gainimh, a chuireann bac ar úsáideoirí, fanacht lena gcríochnú.

Rinneamar loighic an tsocraithe a imchochlú ina dhénártha féin, go páirteach chun teorainn UAC a thrasnú ach amháin nuair is gá. Ach ba chúis ailtireachta í an chúis níos doimhne: tá ról bunúsach difriúil ag cumrú an bhosca gainimh ó ról codex.exe. Trí loighic socraithe an bhosca gainimh a choinneáil i ndénártha tiomnaithe, ligeadh do codex.exe fanacht ina ghnáth-úim gan ardú pribhléidí; coinníodh an t-innealra cumraithe do Windows amháin ó codex.exe a mhéadú ar ardáin eile; díchúpláladh obair shocraithe níos fadtréimhsí ó shaolré an phríomhphróisis; agus tugadh áit amháin dúinn chun na cosáin éagsúla socraithe a bhí de dhíth ar an mbosca gainimh a láimhseáil.

Léaráid a thaispeánann céim cumraithe bosca gainimh ardéirime den chéad scoth.

Is dénártha nua é an riteoir orduithe a chuireann orduithe úsáideora i gcrích i ndáiríre

Mar gheall ar an gcaoi a n-oibríonn teorainneacha logála isteach úsáideora agus téacschomhartha Windows, níorbh fhéidir linn leanúint ar aghaidh ag cruthú téacschomhartha srianta agus próiseas a thosú faoi, ar an mbealach a d’fhéadfaimis leis an mbosca gainimh neamhardéirime. Le go bhféadfaí orduithe a thosú i ndáiríre mar úsáideoir Windows eile, ba é an chéad smaoineamh a bhí againn an sreabhadh seo a leanas:

  • Ritheann codex.exe mar an t-úsáideoir Windows iarbhír. Ansin, i seicheamh, déanann Codex an méid seo a leanas:
    • Glaonn sé ar LogonUserW(...) d'úsáideoir an bhosca gainimh.
    • Glaonn sé CreateRestrictedToken(...) ar théacschomhartha an úsáideora bosca gainimh sin.
    • Ag úsáid an téacschomhartha srianta úsáideora bosca gainimh sin, glaonn sé ar CreateProcessAsUserW(...) chun an macphróiseas deiridh a sheoladh.

I gcleachtas, níor oibrigh an sreabhadh inmhianaithe sin mar gheall ar bhac pribhléide ag CreateProcessAsUserW(...). Ciallaíonn sé seo go raibh codex.exe in ann téacschomhartha srianta a chruthú d’úsáideoir an bhosca gainimh, ach nach raibh sé in ann fo-phróiseas a sheoladh go hiontaofa leis an téacschomhartha sin ó thaobh an fhíorúsáideora den teorainn. Bhí próiseas ag teastáil uainn a bhí ag rith cheana mar úsáideoir an bhosca gainimh — ligfeadh sé seo don chéim srianta agus don chruthú próisis deiridh tarlú ar thaobh úsáideoir an bhosca gainimh den teorainn seachas ar thaobh an fhíorúsáideora.

Ba é an riachtanas sin ba chúis le codex-command-runner.exe, comhad dénártha nua nach bhfuil de chúram air ach téacschomhartha srianta a eisiúint agus an t-ordú iarrtha a sheoladh. Seachas iarraidh ar codex.exe an sreabhadh iomlán a dhéanamh é féin (fíorúsáideoir → úsáideoir bosca gainimh → téacschomhartha srianta → fo-phróiseas), roinnimid an sreabhadh ina dhá chuid:

Cuid 1

  • Glaonn codex.exe ar CreateProcessWithLogonW(...) chun codex-command-runner.exe a sheoladh mar úsáideoir an bhosca gainimh, gan téacschomhartha srianta a úsáid fós.

Cuid 2

  • Laistigh den gcóras rite, osclaíonn OpenProcessToken(GetCurrentProcess(), ...) comhartha an rithóra féin, atá faoi úinéireacht an úsáideora bosca gainimh cheana féin.
  • Glaonn an córas rite ar GetTokenInformation(...) chun SID logála isteach an bhosca gainimh a bhaint, agus ansin ar CreateRestrictedToken(...) chun an téacschomhartha srianta deiridh a chruthú.
  • Agus é fós taobh istigh den ritheoir, glaonn sé ar CreateProcessAsUserW(...) leis an téacschomhartha srianta sin chun an fíorphróiseas a thosú.
Léaráid a thaispeánn sreabhadh an rithéara orduithe chun orduithe srianta a chruthú.

An pictiúr iomlán

Dúirt Albert Einstein, “Ba cheart gach rud a dhéanamh chomh simplí agus is féidir, ach ní níos simplí ná sin.” Sa mheon sin, réitigh ár ndearadh gach fadhb go leordhóthanach. Tá na ceithre shraith atá clúdaithe againn roimhe seo san ailtireacht deiridh:

  • codex.exe é féin
  • codex-windows-sandbox-setup.exe chun gach obair socraithe a bhfuil pribhléidí ardéirime de dhíth uirthi a láimhseáil
  • codex-command-runner.exe chun orduithe téacschomhartha srianta a rith
  • Fo-phróiseas

Nuair a chuaigh mé i ngleic leis an tionscadal seo den chéad uair, ní raibh tuiscint láidir agam ar cá gcríochnódh sé. Ba é an cur chuige a bhí agam ná tosú trí ionstraimíocht a chur leis an gcumas bosca gainimh a úsáid sa teorainn idir Codex agus an córas oibriúcháin. Tá an cur chuige seo an-chosúil leis an gcaoi a gcuirtear bosca gainimh Codex i bhfeidhm ar macOS agus Linux.

De réir mar a d’fhoghlaim mé níos mó faoi na huirlisí sonracha a chuireann Windows ar fáil, agus trí na dosaenacha cinntí lena gcothromaítear slándáil agus éascaíocht úsáide, d’fhás an córas go dtí an fhoirm atá air faoi láthair — dénárthaí iolracha, úsáideoirí saincheaptha, rialacha balla dóiteáin, céim socraithe ardaithe, próisis neamhshioncronacha, agus tuilleadh.

Ní córas thar a bheith simplí é, ach cuireadh gach gné den chastacht leis de riachtanas, chun bosca gainimh a thógáil atá sábháilte agus, a mhéid is féidir, nach gcuireann isteach ar an úsáideoir.

Léaráid a thaispeánann ailtireacht dheiridh bhosca gainimh Windows.

Sábháilteacht a chothromú le húsáideacht iarbhír

Agus muid ag obair chun dea-eispéireas úsáideora a sholáthar d’úsáideoirí Codex ar Windows, ba é an sprioc a bhí againn rud sábháilte a chruthú nár chuir isteach ar an úsáideacht—is é an bunphointe a bhaineann le Codex a úsáid ná go mbeadh gníomhairí in ann obair a dhéanamh gan d’aird leanúnach a bheith de dhíth.

Ceann de na ceachtanna ba mhó ón tionscadal seo ba ea nár chuir Windows aon bhunghné amháin ar fáil dúinn a fhreagraíonn go glan do “gníomhaire códaithe uathrialach sábháilte.” Chuireamar roinnt uirlisí agus coincheap le chéile chun rud comhleanúnach a thógáil. Bhí roinnt smaointe luatha ina gcaochshráideanna. Ba mheascán de fhréamhshamhlacha níos luaithe a bhí sa dearadh deiridh, agus réitigh gach ceann acu cuid den fhadhb.

Ba é an ceacht eile ná gur cineál eile ar fad í an tslándáil do ghníomhaire códaithe i gcomparáid le slándáil feidhmchlár níos traidisiúnta. Caithfidh Codex oibriú le haghaidh sreafaí oibre fíor d’fhorbróirí. Bhain an obair innealtóireachta le comhoiriúnacht le hualaí oibre gníomhairí a chothromú le forfheidhmiú fíor. Mhúnlaigh an teannas sin na comhréitigh sa dearadh deiridh.

An bhfuil fonn ort sainbhosca Codex a fheiceáil i mbun oibre? Bain triail as.