nessie

Oddaljeni izvajalci

Dajte agentu pravi računalnik za delo — na Linuxu, macOS ali Windows.

Kaj je oddaljeni izvajalec

Agent v Nessie nima računalnika. Lahko prebere, kaj je v Nessie, se pogovarja z ljudmi in kliče povezana orodja prek omrežja, vendar ne more odpreti datoteke na prenosniku, zagnati ukaza ali pogledati strani, ki obstaja samo za prijavo nekoga. Oddaljeni izvajalec je način, kako mu dati stroj, na katerem lahko dela.

Izvajalec je majhen demon, ki ga namestite na računalnik, ki ga nadzirate. Navzven se seznani z vašo instanco Nessie, z ključem, ki nikoli ne zapusti gostitelja, dokaže, kateri stroj je, nato pa ponudi fiksni, poimenovani nabor operacij — nič drugega. Delo prihaja kot posamezni podpisani ukazi; rezultati se vračajo kot omejena, strukturirana potrdila. Stroj nikoli ne sprejme dohodne povezave iz Nessie.

Pomembno je natančno vedeti, kaj izvajalec ni, ker je večina orodij za oddaljeni dostop ena od teh stvari, izvajalec pa namerno ni nobena. Ni SSH, ni splošne oddaljene lupine, ni priklopa na terminalski multipleksor, ki ga že imate odprtega, ni vhoda za standardni vnos iz oblaka in ni splošnega proxyja za lokalno omrežje. Ni strežnik MCP in ni vsebnik ali oblačno izvajalno okolje — Nessie take že ima, in so nekaj drugega. Izvajalec je končna točka z zmogljivostjo in zaprtim seznamom operacij, ta seznam pa je celotna površina.

Komu pripada izvajalec

Vsak izvajalec se ustvari z natanko enim obsegom, ki ga kasneje ni mogoče spremeniti. Obseg določa, kdo ga lahko kliče in kdo ga lahko upravlja.

ObsegKdo ga lahko kličeKdo upravlja dostop
ZasebniOseba, ki zahteva, in točno kliceni agent morata oba biti imenovana kot dodeljena. Sam eden ne zadostuje.Dodeljen človek-skrbnik. Agenti lahko uporabljajo samo zasebnega izvajalca, nikoli ga ne morejo upravljati.
ProjektOseba, ki ima pravico do natanko tega projekta, in samo iz zagona v tem projektu.Upravitelj organizacije ali lastnik ali skrbnik projekta.
OrganizacijaOseba s pravico v organizaciji.Upravitelj organizacije.

Zasebni izvajalec mora imeti vedno vsaj enega aktivnega človeka-skrbnika. Neposredna odstranitev zadnjega ne uspe; če bi transakcija ob odjavi pustila nobenega, izvajalec preneha sprejemati novo delo, izprazni, kar ima, in se sam prekliče. Lastnik organizacije ima pot za izredni preklic, ki samo prekliče izvajalca, ki ga sicer ne upravlja, brez prikaza njegovega zasebnega seznama, sej ali vsebine — zasebni dostop se nikoli tiho ne prenese na nekoga drugega.

Kaj lahko agent z njim dejansko naredi

Vokabular operacij je fiksiran v kodi, ne nastavljen za posamezno namestitev. Deli se na dva dela, in ta delitev določa, kaj morate namestiti: nekatere operacije demon postreže iz lastnega delovnega imenika brez virtualnega stroja, ostale pa potrebujejo gostujoči VM na gostitelju za vsako sejo.

OperacijaKaj narediGostujoči VM
file.list, file.readIzpiše in prebere datoteke znotraj enega korena delovnega prostora, izbranega ob seznanitvi.Ne
file.writePiše v kopijo delovnega prostora z možnostjo kopiraj-ob-pisanju. Nikoli ne odpre pravega korena za pisanje.Ne
workspace.reviewPoroča, kaj je osnutek spremenil — do 100 relativnih poti z vrsto in številom bajtov, plus povzetek manifesta. Ne vsebuje vsebine datotek.Ne
sandbox.stopUstavi sejo, ki jo je ustvaril ta zagon.Ne
command.runZažene en ukaz kot vektor argumentov brez lupine v gostu brez izhoda v omrežje. Na tej poti nikjer ni niza lupine.Da
browser.open, browser.observe, browser.actUpravlja brskalnik v gostu glede na seznam izvorov, nastavljen na računalniku. Opazovanje vrne omejeno drevo dostopnosti in po želji pomanjšano sliko; dejanja so odpri naslov, klik, vnos, pritisk in pomik glede na vozlišče, ki ga je agent pravkar opazoval — nikoli selektor, koordinata ali skript.Da
coding.launch, coding.observeZažene upravljano sejo Codex v gostu in prebere tipizirano stanje življenjskega cikla. Ni priklopa na terminal in ni kanala za pozive: agent izve, ali seja teče, ne pa, kaj je na njenem zaslonu.Da
workspace.promoteUveljavi pregledan osnutek v pravi delovni prostor. To je edina operacija, ki piše na gostitelja, in je namerno sploh ne ponudijo modelom.Ne

Operacije, ki ne potrebujejo gosta, so paket delovnega prostora. Gostitelj, ki ne more zagnati gosta, ni pokvarjen izvajalec: normalno se seznani, svoj peskovnik prijavi kot none in oglaša samo paket delovnega prostora in nič drugega. V tem stanju končajo Windows izdaja brez Hyper-V ali Linux stroj, na katerem uporabnik ne more uporabljati /dev/kvm, vmesnik pa to imenuje in ne odpove nejasno.

Delo z brskalnikom agent nikoli ne začne sam od sebe. Običajna pot za vezavo ene operacije zavrne browser.open in browser.observe brez izjeme; zagon brskalnika sproži oseba iz kanala kot en paket štirih operacij na novem zagonu, nadaljnje vezave pa nanj ni več mogoče dodati. Upravljane seje kodiranja delujejo enako.

V kodi obstajata še dve skupini, ki sta namenoma nedosegljivi. Operacije za upravljanje zavihka Chrome, v katerega ste že prijavljeni, imajo popolno lokalno izvedbo in razširitev za nativno sporočanje, vendar nadzorna ravnina tega ne oglasi, dokler strežnik ne more dokazati, da je bil izvorni pogovor zaseben, in zabeležiti, kdo je kaj razkril — temelj je namenoma neaktiven, razširitev pa ni priložena nobenemu namestitvenemu paketu. Več operacij kodiranja — priklop, poziv, prekinitev in zapiranje — je imenovanih v shemi, vendar nimajo izvedbe, zato jih ni mogoče dodeliti.

Kako deluje

Povezava je vedno odhodna

Demon vzpostavlja odhodne povezave HTTPS in WSS samo do vašega API-ja Nessie. Nessie nikoli ne kliče prenosnika, nikoli ne hrani naslova zanj in nikoli ne obravnava katere koli končne točke iz kataloga kot prenosa do stroja. Zato izvajalec deluje z domačega omrežja, za NAT-om, v podjetnem VPN-ju, brez posredovanja vrat in brez pravila za vhodno požarno steno — in zato je ustavitev demona popolna in takojšnja prekinitev povezave.

Izvor API-ja mora biti HTTPS. Edina izjema je naslov zanke za ljudi, ki zaženejo Nessie na lastnem računalniku, prek lastne okoljske spremenljivke; noben običajni prapor ne spremeni produkcijskega izvora v navaden HTTP.

Seznanitev dokaže stroj, osebo pa potrdi

Seznanitev je dvostranski dokaz. Upravičena oseba ustvari izvajalca v Nessie z njegovim obsegom, Nessie pa izda vpis: 256-bitni naključni izziv, od katerega shrani samo preverjalnik SHA-256, veljaven deset minut in uporaben enkrat.

Na stroju demon ustvari par ključev Ed25519, ga shrani v z OS zaščiteno shrambo, dostopno samo lastniku, in točno podpisano zahtevo zapiše na disk preden opravi kakršen koli omrežni klic — tako se lahko izgubljen odgovor ponovi z istim pripravljenim ključem in ne seznani dvakrat. Nato pošlje id vpisa, izziv, svoj javni ključ in podpis dokaza. Nessie shrani javni ključ in njegov prstni odtis. Zasebnega ključa nikoli ne shrani.

Nessie nato pokaže prstni odtis osebi, ki ga potrdi. Dokler ta potrditev in naknadni dokaz posedovanja ne obstajata, izvajalec ostane brez povezave. Seznanitve ni mogoče nikoli dokončati iz klepetalnega besedila ali zapisa terminala: zahteva namerno človeško dejanje v spletnem ali namiznem vmesniku.

Stroj, ki izgubi svoj ključ, ne more ponovno prevzeti svojega zapisa izvajalca. Ta se prekliče in ponovno vpiše kot nov izvajalec. Zamenjava ključa pa je nasprotno ena transakcija, podpisana s starim in novim ključem.

Opisnik je podpisana trditev stroja o samem sebi

Seznanjen demon objavi opisnik: podpisano, monotono revidirano izjavo samo o strukturnih dejstvih — katere sheme operacij podpira, svoje vire in omejitve omrežja, platformo in povzetek lokalne politike. Ne vsebuje gostiteljskih poti in v oblaku ne ustvarja pooblastil.

Nova revizija se ob prihodu nikoli ne aktivira. Shrani se kot čakajoča na pregled, oseba s pravico jo mora videti in potrditi, preden lahko vpliva na to, kaj je na voljo. Prav to preprečuje, da bi osveževanje zmogljivosti tiho dalo novo moč: novo oglaševana operacija se začne kot zavrnjena.

Bodite jasni, kaj podpis dokazuje. Opisnik, podpisan s ključem seznanjenega izvajalca, dokazuje, da je ta ključ podal trditev. Ne dokazuje, da je gostitelj nekompromitiran, in vmesnik to mora povedati.

Pošiljanje: kandidat, vezava, ukaz, potrdilo

Agent nikoli ne imenuje izvajalca. Preden lahko zagon uporabi enega, Nessie logično operacijo razreši v neprozoren, kratkotrajen kandidat za razpoložljivost. Odgovor ne vsebuje id-ja izvajalca; baza hrani samo povzetek ročaja skupaj s tem, za koga in za kaj je bil razrešen. Modeli in odjemalci prejmejo ročaj, ne izbirnega stroja.

Razpoložljivost je en razreševalnik, ki ga enako uporabljajo API, delavec, uporabniški vmesnik in pomočnik:

available(operation, human, agent, immutableRunContext) =
  human may discover executor
  ∩ exact executor-agent-operation grant allows operation
  ∩ stable logical tool grant allows operation
  ∩ scope matches immutable run context
  ∩ executor is online and descriptor is approved
  ∩ local policy permits operation

Poraba kandidata ustvari vezavo pod zaklepom baze, ki vsako od teh vrat znova preveri in napreduje monotoni števec. Pošiljanje jih preveri še enkrat. Posledica: odvzeto dovoljenje, zožena politika ali preklicani izvajalec med dvema korakoma ustavi delo, namesto da bi bilo opaženo šele pozneje — in poskus ponovitve nikoli ne more pristati na drugem stroju, kot je bil tisti, na katerega je bil zagon vezan.

Sam ukaz teče prek Nessiejeve običajne vrste opravil in življenjskega cikla klica orodja, ne prek lastne druge. Demon išče delo prek svojega overjenega kontrolnega kanala; nanj se nikoli ne potiska. Ukaz se premakne skozi štiri potrdila in nobenega drugega:

leased → accepted → started → result-acknowledged

Vsak okvir veže id ukaza, izvor zagona, števec vezave, revizijo zmogljivosti, rok veljavnosti, ključ idempotentnosti ter povzetke argumentov in podatkov. Demon zavrne neujemanje, zastarelo politiko, ponovitev ali drugi rezultat za ukaz, ki ga je že dokončal. Argumenti in končni rezultati so šifrirani z AES-256-GCM v mirovanju; baza hrani omejeno šifrirano besedilo in kanonične povzetke, ne vsebin.

Če se potrditev izgubi, Nessie ne predpostavi uspeha. Ukaz se zabeleži kot neznan izid, zagon pa sledi običajni poti obnove; demon, ki vsak prejeti ukaz pred začetkom dela lokalno zabeleži v dnevnik, stranskega učinka ne bo ponovil. Pozno potrdilo lahko nejasnost še vedno pošteno razreši.

Meja zaupanja

NačeloLahkoNe more
OsebaSeznani izvajalca, ga upravlja, ko je upravičena, potrjuje dostop in spremembe politike.Razširi politiko, ki jo stroj sam zavrne, ali deluje brez trenutne upravičenosti.
Agent, vključno z osebnim pomočnikomKliče operacijo, ki mu je že na voljo; pripravi predlagano spremembo dostopa za osebo, ki je zahtevala.Upravlja dostop, odobri samega sebe, izbere stroj, spremeni lokalno politiko ali uveljavi spremembo, ki jo je pripravil.
Nadzorna ravnina NessieRazreši razpoložljivost, veže zagon, oddaja ukaze izvajalcu, hrani redigirana revizijska dejstva.Kliče stroj, razširi lokalno politiko, doseže gostiteljske poverilnice ali obravnava besedilo terminala kot pooblastilo ali izid.
Demon izvajalcaUveljavlja lokalno politiko, se seznani navzven, zažene gosta in prehod, potrjuje ukaze.Razširi svoj obseg, sprejme zastarelo ali ponovljeno delo, izpostavi gostiteljski delovni prostor ali poverilnice neposredno ali pošlje surove lokalne podatke v revizijski dnevnik.
Gostujoči VM in orodja v njemDela v peskovniku kopiraj-ob-pisanju in doseže omrežje samo prek prehoda.Doseže datoteke gostitelja, gostiteljske poverilnice, neposredno omrežje ali DNS ali uveljavi spremembo gostitelja.

Namestitev in seznanitev izvajalca

Namestite CLI za Mac z Homebrew, aplikacije za Mac z Homebrew casks, CLI za Linux prek APT ali DNF ali izvajalca za Windows prek WinGet. Vsaka seznanjena ekipa ima ločena dovoljenja, shranjena na računalniku. Nessie upravlja dostop znotraj ekipe; lokalnih virov ne more spremeniti.

Vodnik za namestitev in seznanitev vsebuje natančne ukaze, dvostranski postopek s osemmestno kodo, lokalne nastavitve, zagon, posodobitve in odstranitev.

Kako daleč je vsaka platforma dejansko preizkušena

Stanje treh gostujočih peskovnikov se razlikuje, in razlika je pomembna. macOS je zaledje z delujočo, preizkušeno gostujočo potjo. Zaledje Firecracker v Linuxu in zaledje Hyper-V v Windows sta implementirana in pokrita s testi na strani gostitelja — zagonsko zaporedje, diski slik, kontrolni in izhodni prenosi, protokol osnutkov — vendar v stalni integraciji tega projekta še noben gost ni bil zagnan na pravi strojni opremi, ker potrebuje stroj s KVM ali Hyper-V, opravila, ki bi to dokazala, pa ga še nikoli niso imela. Paket delovnega prostora, ki ne potrebuje gosta, je od začetka do konca preizkušen v Windows na pravi kontrolni zanki. Operacije z gostom v Linuxu in Windows obravnavajte kot nepreizkušene, dokler jih ne preizkusite na lastni strojni opremi. Zaslon seznanitve v Nessie pove isto z lastnimi besedami.

Varnost in zadrževanje

En koren delovnega prostora, njegova pot pa ostane na stroju

Seznanitev izbere natanko en kanonični koren delovnega prostora: en imenik, ne množico map in nikoli njunega najbližjega skupnega nadrejenega imenika. Nessie prejme osnovno ime korena, da lahko oseba v vmesniku prepozna mejo; celotna pot ostane v shrambi stanja stroja, dostopni samo lastniku, in se nikoli ne naloži. Koren je mogoče spremeniti, vendar šele potem, ko so odstranjeni vsi lokalni osnutki in peskovniki, in to ustvari novo revizijo opisnika, ki gre skozi isti človeški pregled kot vsaka druga sprememba politike. Nikoli se tiho ne razširi na nadrejeni imenik.

Datotečne operacije sprejemajo samo relativne poti. Zavrnejo prehode in vsako komponento simboličnih povezav, ponovno preverijo, ali je konfigurirani koren še navaden imenik, in vrnejo omejene strukturirane rezultate brez gostiteljske poti.

Pisanja gredo v kopijo, uveljavi jih samo oseba

Agent nikoli ne piše v vaše datoteke. file.write ustvari omejeno drevo kopiraj-ob-pisanju pod lastnim imenikom stanja demona, ključeno na zagon, in poznejša branja ter seznami za ta zagon vidijo osnutek. Delo v gostu, vključno s sejami kodiranja, uporablja isti delovni prostor kopiraj-ob-pisanju.

Uveljavitev osnutka v pravi delovni prostor je ena operacija — workspace.promote — in je edini zapis na gostitelja v sistemu. Nima sheme, vidne modelom: noben agent, pomočnik ali pot, ki jo poda klicatelj, ne more osnutka spremeniti v zapis na gostitelja. Namesto tega oseba odpre Vaši pregledani osnutki, pritisne Preglej uveljavitev in potrdi s trenutnim geslom. Strežnik nato ponovno preveri potrjen povzetek pregleda, povzetek manifesta, zagon, uporabnika in agenta, revizijo pooblastila, dovoljenje za operacijo in aktivno lokalno politiko, preden ustvari ukaz. Na stroju demon sam znova zgradi manifest in zavrne povzetek, ki se je spremenil — tako sprememba po pregledu ne more priti skozi odobritev pregleda.

Sama uveljavitev temelji na deskriptorjih in je dnevniško beležena. Namenski pomočnik prejme koren delovnega prostora in osnutek kot že odprta deskriptorja imenika, nikoli kot poti; vsako komponento preveri z operacijami brez sledenja simboličnim povezavam, zavrne simbolne in trde povezave, posebne datoteke ter prehode čez priklope, dnevnik pa je vse-ali-obnovi, tako da zrušitev bodisi dokonča preverjeni manifest bodisi pred vsem drugim obnovi prvotno stanje.

Gost nima omrežja, izhod pa je vsiljen

Kadar operacija res potrebuje gosta, je to mikro-VM Linux za sejo, brez domačega imenika gostitelja, brez vtiča Docker, brez agenta SSH, brez podedovanega okolja in brez gostiteljskega priklopa razen deljenja delovnega prostora. Izvršljivi priklop izvajalnega okolja je samo za branje; zapisljivi priklop delovnega prostora prepoveduje izvajanje, zato vse, kar teče, prihaja iz preverjenega izvajalnega paketa in ne iz nečesa, kar je napisal agent. Gost se pred odprtjem katere koli vtičnice preklopi na neprivilegirano identiteto, deljenje v lasti korena pa zaustavi zagon, namesto da bi pustilo privilegirano obremenitev teči.

Najpomembneje: gost nima omrežnega vmesnika. V Linuxu zagonsko zaporedje namenoma nikoli ne konfigurira enega in ne ustvari naprave TAP; v Windows se virtualni omrežni adapter, ki ga Hyper-V privzeto doda, med namestitvijo odstrani. Edina pot gosta ven z gostitelja je lokalni proxy zanke znotraj njega, tuneliran prek virtualne vtičnice do mostu na gostitelju, ki bajte preda lastnemu prehodu demona — lokalnemu poslušalcu vtičnice v lasti lastnika brez TCP poslušalca in brez splošnega načina posredovanja. Ta prehod je mesto, kjer se uveljavljajo pravila za HTTP, CONNECT, WebSocket, preusmeritve, izvor, prenos in nalaganje, pri čemer se uporabi obstoječi mehanizem pinned-fetch iz Nessie, ne druga izvedba enakih pravil. NAT mostu ni in neposrednega razreševalnika DNS prav tako ne: alternativni DNS, surovi TCP, QUIC in obhod proxyja so vsi zavrnjeni.

Seznam izvorov, ki ga prehod uveljavlja, nastavi na stroju njegov lastnik in se namenoma nikoli ne naloži. Vmesnik to odsotnost imenuje, namesto da bi se pretvarjal, da je Nessie urejevalnik pravil za izvore: če želite vedeti, kaj lahko brskalni izvajalec doseže, vprašajte osebo, ki je lastnik stroja.

Poverilnice

V noben gost ni nikoli priklopljena shramba poverilnic gostitelja. Ne keychain, ne ~/.codex ali ~/.claude, ne globalni žeton CLI, ne okoljska spremenljivka z API-ključem. Edina podprta prijava za upravljano sejo kodiranja je z lastnikom zasebna datoteka za overitev, katere vsebino prebere samo graditelj initrd pod nadzorom lastnika — nikoli Nessie, nikoli deskriptor, nikoli dnevnik ali argument ukaza — in se enkrat premakne v zasebni domači imenik znotraj gosta, ki se uniči skupaj z VM. Ta gost lahko doseže natanko en izvor.

Izvajalec brskalnika je še strožji: vsaka seja dobi nov zasebni profil brskalnika in zavrne tistega, ki ga je pripravil delovni prostor, zato začne brez piškotkov, razširitev in kakršnega koli prijavljenega stanja iz okolja.

Surovi lokalni podatki lahko dosežejo ponudnika modela samo znotraj izrecnega, omejenega zagona. Nessie trajno hrani redigirane manifeste, povzetke argumentov in politik, povzetke rezultatov ter strukturiran status. Vsebine datotek, izhod terminala, DOM brskalnika, poverilnice in dejavniki overjanja so prepovedani v zapisih baze, revizijskih vnosih, dnevnikih, dogodkih v realnem času in poročilih o napakah.

Kaj upravljavec dodeli in kako to spet vzame

Pravica do uporabe izvajalca ni eno stikalo. Agent lahko kliče operacijo samo, če ima dovoljenje za točno tega izvajalca in točno to operacijo, in običajna logična politika orodij to dovoli, in obseg zagona se ujema, in lastna lokalna politika stroja to dopušča. Dodelitev ene operacije enemu izvajalcu zato ne dovoljuje ničesar na drugem, osveževanje zmogljivosti pa ne more ničesar razširiti, ker nove operacije prispejo zavrnjene.

Dostop agenta in deljenje začneta veljati takoj na samih straneh, brez nadaljevanja potrditve, poziva za geslo ali nove overitve. Na zavihku izvajalca Agenti upravitelj neposredno vklopi ali izklopi dostop agenta do stroja; na Deljenje pa osebi dodeli pravico Lahko uporablja ali Skrbnik ali razširi uporabo na projekt ali na vse v trenutni ekipi na enak način. V vašem lastnem pogovoru z osebnim pomočnikom — samo tam, nikoli v deljenem kanalu, načrtovanem opravilu ali zagonu drugega agenta — lahko pomočnik namesto tega pripravi spremembo dostopa agenta ali dodelitve, kar v tem pogovoru objavi potrditveno kartico; nič se ne spremeni, dokler ne pritisnete Dovoli dostop, klepetalno besedilo pa nikoli ni potrditev.

Pri treh spremembah morate še vedno ob potrditvi ponovno vnesti trenutno geslo: aktivacija revizije deskriptorja; pomočnikova pripravljena dodelitev, ki stroj da osebi in ne agentu; in trajna politika, ki sodelavcem dovoli zagon ukazov na njem kot lastniku — politika za delo na nalogah brez nadzora. Odklop ali brisanje stroja namenoma ne zahtevata nobenega od teh, saj stikalo za izklop ne sme biti težje dosegljivo kot to, kar ustavlja. Uveljavitev pregledanega osnutka vedno zahteva geslo. Dnevnik revizije ločeno beleži osebo, ki je ukrepala, in sodelovanje pomočnika.

Izvajalec se premika skozi majhen, eksplicitno določen nabor stanj:

pending_pairing → online ↔ offline
        │             ↓
        └──────────→ draining → revoked
                         ↓
                       error

Meni Računalnik v glavi je mesto, kjer upravitelj pripravi vsako spremembo življenjskega cikla: ga začasno ustavi, po začasni ustavitvi nadaljuje, odklopi ali izbriše. Začasna ustavitev pusti izvajalca na spletu, vendar preneha sprejemati ukaze. Odklop razveljavi njegova potrdila odjemalca in vse neizpolnjene ročaje kandidatov ter ga ni mogoče razveljaviti — odklopljenega izvajalca je treba ponovno seznaniti kot novega. Brisanje naredi enako in ga poleg tega odstrani s seznama; za razliko od odklopa je na voljo ne glede na stanje izvajalca, tudi če čaka na seznanitev ali je že odklopljen, ker je to edini način, kako zapusti seznam. Izpraznitev — dokončanje dela, ki ga že ima, preden preneha sprejemati novo — je pravo tretje stanje v protokolu, vmesnik ga lahko prikaže, vendar tukaj ničesar ne sproži: to naredi samo neposredni klic API-ja. Vsaka potrjena sprememba dostopa, pregled deskriptorja in prehod življenjskega cikla, tudi izpraznitev, poveča tudi epoho povezave demona, zato njegovo naslednje kontrolno poizvedovanje — najkasneje po sekundi — ne uspe in zaustavi vse žive goste, preden se lahko ponovno poveže. Preklic je zahteva, ki je stroj ne sme ignorirati.

Upravljanje izvajalca

Preverjanje, ali deluje

Odgovor Nessie je živost. Demon podpiše srčni utrip, izvajalec, čigar zadnja overjena aktivnost je starejša od šestdeset sekund, pa je trajno označen kot brez povezave, preden ga je mogoče izpisati, izbrati ali mu poslati delo. Izvajalec, ki je prikazan kot na spletu, se je dokazal v zadnji minuti.

Na stroju ni končne točke za stanje — demon po zasnovi ne posluša na nobenih vratih, namenjenih upravljavcu. Na macOS in Linuxu vprašajte CLI neposredno:

nessie-executor status                # every paired executor, plus linger state
nessie-executor status <executorId>
systemctl --user status nessie-executor@<executorId>

Na macOS status poroča o launchd agentu vsake ekipe. Ukaz systemctl je samo za Linux. V Windows je ikona v sistemski vrstici hitri odgovor, njen meni navede razlog, dnevnik storitve pa vsebuje podrobnosti. Na obeh platformah zavihek izvajalca Pregled v Nessie prikaže njegove odobrene profile, mejo podatkov, kdaj je bil nazadnje viden, in vsak čakajoč predlog lokalne politike, ki čaka na pregled.

Dnevniki

PlatformaKje
Linuxjournalctl --user -u nessie-executor@<executorId>; demon nima lastne dnevniške datoteke
Windows%ProgramData%\Nessie Executor\logs\service.log, ki ga odpre Odpri mapo dnevnikov v sistemski vrstici

Vsaka zavrnitev, ki jo lahko oseba ukrepa, konča tukaj: nepodpisan ali spremenjen izvajalni paket, imenik stanja, ki se ne bi dal zavarovati, izvajalec, ki se ob zagonu ni zagnal. Nikoli tukaj ne konča izziv seznanitve, ključ ali izhod procesa otroka. Ni nastavitve ravni dnevnika, ki bi jo bilo treba dvigniti, ker ni nič bolj podrobnega, kar bi lahko vklopili.

CLI za Mac zapisuje dnevnik storitve vsake ekipe v ~/Library/Logs/NessieExecutor/<executorId>.log.

Posodabljanje

Posodobite CLI prek Homebrew, APT ali DNF in nato znova zaženite storitev vsake ekipe z disable, ki mu sledi enable. WinGet posodobi izvajalca za Windows. Neposredni namestitveni programi Nessie Desktop ponujajo podpisane posodobitve v aplikaciji; namestitve MSI in Debian uporabljajo svoj upravitelj paketov. Seznanitve in lokalna dovoljenja ostanejo ohranjena pri posodobitvah.

Ustavitev in odstranitev

Ustavitev je postopek, ki ga vodi demon sam, ne prisilna prekinitev. Prejme signal za zaključek, ustavi vse seje gosta, sprosti svoj zakup in izstopi. V Linuxu enota čaka petnajst sekund za proračun čiščenja desetih sekund in namenoma nikoli ne preide na nepreklicno prisilno prekinitev — ker demon, ubit sredi čiščenja, pusti mikro-VM in prekrivanje delovnega prostora brez procesa, ki bi ju očistil. Ustavitev, ki visi, je zato vidna v systemctl --user status in ni tiha, odločitev za prisilno prekinitev pa je izrecna človeška odločitev.

Za odstranitev paketa v Linuxu:

nessie-executor disable <executorId>   # stops and disables the service
sudo apt remove nessie-executor
loginctl disable-linger                # only if your user manager should stop running at boot too

V Windows msiexec /x ustavi in odstrani storitev, njene vnose v registru in vnos za zagon v sistemski vrstici. Na obeh platformah ostane seznanjeno stanje namenoma: ~/.local/state/nessie-executor/ v Linuxu in %ProgramData%\Nessie Executor v Windows. Seznanitev je ključ stroja in podpisana revizija politike, odstranitev programa pa ni zahteva za njuno uničenje; ponovna namestitev ju najde tam, kjer sta bila. Seznanitev pozabite tako, da mapo izbrišete ročno, izvajalca pa prekličete v Nessie, da ga končate z druge strani.

Sistemska vrstica v Windows in namizni pomočnik ponujata Pozabi seznanitev na tem računalniku kot polnovredno dejanje: ustavi lokalnega demona, odstrani ključ stroja in izbor mape ter po enem nativnem potrdilu trajno izbriše lokalne kopije osnutkov — pri tem pa pusti izvajalca na strežniku in njegovo revizijsko zgodovino, da jo lastnik obdrži ali prekliče.

Pogoste napake

SimptomKaj pomeni
Izvajalec se seznani, vendar ponuja samo datotečne operacijeGostitelj ni prijavil uporabnega peskovnika. V Linuxu preverite, ali lahko berete in pišete /dev/kvm in ali ste v skupini kvm — po dodajanju sebe se odjavite in znova prijavite. V Windows izdaja nima Hyper-V; to je lastnost izdaje, ne nastavitev.
Kontrole izvajalca popolnoma manjkajoGradnja ni preverljivo iz pričakovanega izdajatelja. V Linuxu mora biti izvajalni paket v lasti korena brez pravice pisanja za skupino ali vse; v Windows in macOS se podpis mora ujemati z izdajateljem ali ekipo, pripeto v gradnjo. Vsaka od teh zavrne z besedami in navede popravek, namesto da bi kontrole skrila.
Storitev teče, vendar ne zažene demona in zavrne vsak ukazNekaj v namestitvi je bilo zamenjano po pakiranju. To je namerno vedenje: pokvarjena namestitev odgovori z razlogom, namesto da izgine, saj bi ustavljena storitev povzročila, da ikona v sistemski vrstici navede napačen popravek.
Zagon se konča z neznanim izidomPotrditev zaključka se je izgubila. Nessie ne bo poročal o rezultatu, ki ga ni prejel: ukaz je označen kot neznan, zagon gre na pot obnove, stranski učinek pa se ne ponovi. Pozno potrdilo od demona lahko nejasnost še vedno razreši.
Operacija, ki je včeraj delovala, danes zavrnjenaVrata so se spremenila med vezavo in pošiljanjem, preverjanja pa se ponovijo na vsakem koraku: odvzeto dovoljenje, revizija deskriptorja, ki čaka na pregled, zožena lokalna politika, obseg, ki se ne ujema več z zagonom, ali preklic. Zavrnitev navede, kateri.
Agent zahteva brskalnik in mu je rečeno, da ne moreDelo z brskalnikom in kodiranjem sproži oseba iz kanala kot celoten paket na novem zagonu. Običajna pot za vezavo ju zavrne po zasnovi, in nobene operacije brskalnika ni mogoče dodati zagonu, ki že nekaj počne.