Bugs in schoolLAN scripts

Mv_home

In het script mv_home komen we de volgende regels tegen:

#maybe next cleanup is unexpected (should it be a parameter?)
rm -rf $REF/{Profiles,.WfWg,.Win95,.Win2K,WinNT,WinXP}
cp -dpR $REF/{Profiles,.WfWg,.Win95,Win2K,WinNT,WinXP} /village/leerlingen/$GRP/$USR

Dus wat doet dit: het verwijdert de drie directories van de ref_leerling van de groep waar je de user heen wilt kopiėren. Hierna probeert het om deze directories nog te kopiėren naar de nieuwe userdirectorie.

Oplossing: volgens ons is de regel waar de directories verwijderd worden niet nodig.

Nwe_school

Het script voert in een aantal bestanden een 'search-and-replace' actie uit. Hij zoekt bijvoorbeeld naar de string 'oude-schoolnaam' en vevangt die dan door 'nieuwe-schoolnaam'. Dat kan gevaarlijke situaties opleveren. Stel bijvoorbeeld dat iemand (al dan niet per ongeluk) een stuk code als schoolnaam opgeeft! Of 'e' als schoolnaam. Hierna vervangt hij de schoolnaam weer door 'schoolnaam'. Dan worden binnen die files alle e's vervangen door 'schoolnaam'! Dat leidt uiteraard tot ongewenste situaties.

Het script Nwe_school wijst op dit moment op onze versie van het systeem aan zowel de nieuwe domeinnaam als de schoolnaam de naam toe die je hebt opgegeven voor school. Er gaat dus ergens iets fout bij het toewijzen van de domeinnaam. We kunnen momenteel niet testen of dit een aparte bug is of aan bovenstaande 'search-and-replace' actie ligt. Wanneer daardoor namelijk voor zowel schoolnaam als domeinnaam hetzelfde wordt opgegeven, kunnen deze 2 verwijzingen niet meer van elkaar worden onderscheiden.

Verder vermoeden we dat het noodzakelijk is om de server te rebooten voordat de wijzigingen van kracht zijn.

Del_home

Ook het script del_home kan gevaarlijke situaties opleveren. Als men bijvoorbeeld "del_home apache" doet, dan wordt o.a. in het bestand /etc/passwd de entry voor de apache-webserver verwijderd. Bij het opnieuw opstarten van de server kan de webserver dan niet meer opstarten. Wat er gebeurt als men ditzelfde doet bij 'root' hebben we maar niet geprobeerd…

Create_home

Het script create_home heeft een aantal features:
  • Je kan iemand in meerdere groepen stoppen, mits het rijtje met de groep "team" begint. Hoe dat in het systeem tot uitdrukking komt is totaal onduidelijk, de gebruiker komt alleen in de root van village te staan. En andere volgorde van groepen (dus bv "team" aan het einde) leidt tot een rare foutmelding.
  • Je kan een leraar aanmaken (dus in "team" stoppen) met als referentieleerling bv groep8. Dan heeft de leraar dus totaal geen rechten.
  • Stel, je maakt een nieuwe leerling Willem in groep 7. Dan verander je z'n groep (dus roep create_home aan zonder "new") naar groep5. De user "Willem" verschijnt dan in twee groepen: groep7 en groep5. Doe je nu een del_home, dan wordt wel de entry weggehaalt bij groep 5, maar die van groep 7 blijft staan. De naam wordt wel verwijderd uit de file /etc/passwd, waar de volledige naam in staat.