Hvorfor kjøretiden sier nei
En kort forklaring av kapabilitetsmodellen, og hvorfor den er slått på fra første stund.
Det vanligste spørsmålet nye brukere har, er hvorfor et program stopper med manglar capability når det åpenbart bare skal lese en fil eller åpne en port. Svaret er at Norscode snur en standardinnstilling de fleste andre språk tar for gitt — og når du først forstår det, blir feilmeldingen en hjelper, ikke et hinder.
Programmet starter uten tilgang
I de fleste språk arver et program tilgangen til brukeren som starter det: hele disken, hele nettverket, alle miljøvariabler. En avhengighet dypt nede i treet kan lese nøklene dine uten at noen legger merke til det. I Norscode får programmet ingenting før du gir det — og feilmeldingen manglar capability betyr rett og slett at koden ba om noe den ikke har fått.
Slik gir du tilgang
Du oppgir evnene når du starter programmet, gjennom miljøvariabler:
NORSCODE_VM_CAPABILITIES="disk.read,net.tcp" NORSCODE_VM_DISK_ROOT="/srv/data" nc run rapport.noHer kan programmet lese under /srv/data og bruke nettverket — ikke skrive til disk, ikke lese miljøet. De vanligste evnene er disk.read, disk.write, net.tcp, env.read og env.write. I tillegg kan du snevre inn hvor tilgangen gjelder: NORSCODE_VM_DISK_ROOT begrenser disktilgangen til bestemte kataloger, og NORSCODE_VM_NET_SCOPE hvilke verter programmet får snakke med.
Grensen kan ikke forhandles bort
Det viktige er at programmet ikke kan be om mer tilgang mens det kjører. Grensen settes én gang, av den som starter det. Det betyr at du kan kjøre kode du ikke har lest hver linje av — en tredjepartsmodul, et eksempel du fant på nett — og likevel vite nøyaktig hva den maksimalt kan gjøre.
Litt ekstra arbeid, mye igjen
Modellen koster noen linjer når du starter tjenesten. Til gjengjeld har du en kortfattet, ærlig liste over hva programmet får lov til — lesbar for et menneske, ikke gjemt i tusen linjer kode. I en verden der de fleste sikkerhetshull handler om at noe fikk gjøre mer enn det trengte, er det en billig forsikring.
Les også
- Nytt nettsted for språketnorscode.no handler nå om programmeringsspråket, med dokumentasjon, eksempler og nedlastinger.
- Kompilatoren bygger seg selvNorscode er selvhostende: verktøykjeden er skrevet i språket den kompilerer.
- Hvorfor et programmeringsspråk på norsk?Norske nøkkelord er ikke en kuriositet, men et bevisst valg om hvem programmering skal være tilgjengelig for.