Jeg hyggekoder lidt på et projekt hvor deltagerne skal kode en AI, som
så skal konkurrere mod hinanden. Grænsefladen er at deltageren skal
skrive en funktion i sproget X som tager et argument der repræsenterer
spillets tilstand og returnerer et enkelt træk.
I gamle dage ville man nok have udvist tillid til at deltageren højst
bøjede reglerne inden for rimelighedens grænser. Sådan fungerer det
desvære ikke i dag, hvor det vil opfattes som en direkte indbydelse til
at hacke min maskine.
En mulig vej er at vælge sproget X så det er tilpas restriktivt til at
det ikke kan gøre nogen skade. Det kan enten være et legetøjssprog eller
en tilpas lille delmængde af et eksisterende sprog man kan lave en
statisk analyse af. Begge dele vil dog øge omfanget af projektet
betragteligt.
I den anden grøft kan man køre hver enkelt AI i en separat virtuel
maskine sat op til formålet. Hvis AI'en vælger at ødelægge den virtuelle
maskine har den bare tabt, men ellers lider hverken jeg eller
konkurrencen nogen skade. Med moderne provisionerings-tools er det
faktisk en overkomelig vej at gå.
I stedet for virtualisering af en fuld maskine har jeg dog valgt at
bruge Linux Containers (LXC), som er en
udvidet chroot funktionalitet (ala vserver og jails).
Med LXC kan jeg som upriviligeret bruger starte en process som ikke kan
se andre processer end sig selv om en init-ligende process, ikke kan se
noget netværk og kun har adgang til det filhierarki jeg har givet den
adgang til. For lethedens skyld har jeg valgt at lade /etc, /home, /tmp
og /var være stort set tomme, mens /bin, /lib og /usr er mountet
read-only fra mit rigtige filhierarki.
Dermed håber jeg trygt at jeg kan køre den kode som deltageren kaster
efter mit projekt.
Det meste af min opsætning kan findes på
gist.github.com
hvor der også er konkrete eksempler på kommandoer og jeg har haft glæde
af at læse Stéphane Grabers blogserie om
LXC,
især afsnit 7.

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.
Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.
Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.
Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.