Een gastaccount voor een computer met Fedora
Stel je hebt een gemeenschappelijke computer waar meerdere mensen soms gebruik van maken. Het grootste deel heeft een account, maar je wilt deze computer ook in kunnen zetten voor eenmalige bezoekers / gebruikers met een gastaccount. Hoe pak je dat aan? In deze handleiding wordt dat bekeken.
Het aanmaken van het gastaccount
Het eerste wat gedaan moet worden is het aanmaken van een gebruikersaccount voor de gastgebruiker. Ik zal eerst het gebruikte commando opgeven, en daarna uitleg geven over de keuzes en opties die gemaakt en gebruikt zijn.
|
|
Ik heb hier een vrij standaard account aangemaakt met een aantal opties. Zie ook $ man useradd
voor meer uitleg en welke opties er zijn. Bij een aantal opties is er een aparte waarde gebruikt, hieronder de uitleg waarom:
- Bij
-d /tmp/gastaccount
is de thuismap voor de nieuwe gastaccount ingesteld op/tmp/gastaccount
. Dit is gedaan om ervoor te zorgen dat de data van het account na verloop van tijd verdwijnt. Hieronder meer daarover. - De optie
-N
is meegegeven. Hierdoor wordt er geen gelijknamige gebruikersgroep aangemaakt, dit is voor de gastaccount ook helemaal niet nodig.
Het instellen van het wachtwoord
Na het aanmaken van de gastgebruikersaccount is het een kwestie van een wachtwoord instellen. Echter is het niet handig om voor een gastaccount een wachtwoord te moeten hebben wat na verloop van tijd verloopt of kwijt kan raken. Daarom is het veel handiger om het wachtwoord van het account te verwijderen. Hiervoor heeft $ passwd
een aantal opties, zie ook $ man passwd
voor meer uitleg en welke opties er zijn. De volgende opties zijn gebruikt voor de gastaccount:
|
|
- De
-d
optie verwijdert het wachtwoord van het gastaccount. - De
-f
optie forceert dit. Het wil voorkomen dat$ passwd
weigert een wachtwoord van een account te halen als het besturingssysteem zo is ingesteld. Dit overschrijft dat.
Het automatisch verwijderen van de thuismap van het gastaccount
Omdat het een tijdelijk account is waar gasten even snel gebruik van kunnen maken (net zoals een gastaccount op een Mac, bijvoorbeeld) is het niet de bedoeling dat alle bewaarde data ook echt langdurig bewaard blijft. Dat is de reden dat er voor een thuismap in /tmp/
is gekozen; deze map wordt leeggegooid zodra de computer opnieuw wordt opgestart of wordt afgesloten.
Het is alleen niet altijd mogelijk om, als de vorige gast de computer niet meer nodig heeft en de volgende staat te wachten, de computer af te sluiten of te laten herstarten. Daarom is het een verstandig idee om een scriptje te laten draaien op de achtergrond wat de map weg- of leeggooit als de gastaccount niet is ingelogd.
Let op: de manier waarop dit script geschreven is (en de bijbehorende timer, daarover straks meer) is het niet gegarandeerd dat de data ook daadwerkelijk weggegooid is als een nieuwe persoon gebruik gaat maken van de gastaccount! Dit script draait eens per minuut. De snelste en makkelijkste manier om hier omheen te werken is een kleine pauze introduceren tussen gasten, bijvoorbeeld om het toetsenbord en de muis even schoon te maken.
Het verwijderen van het account gaat, zoals je kon lezen, met een script. Om dit eens in de minuut te laten lopen is er ook een systemd service en timer ervoor. Om met het script te beginnen:
|
|
Het lijkt misschien een complex script maar eigelijk valt het mee. Het kijkt, met hulp van $ who
en $ grep
of er een gebruiker is aangemeld genaamd ‘gastaccount’, en wat de thuismap van die gebruiker is. Plaats dit script in /usr/local/bin/guest-cleanup.sh
Als er geen gebruiker is aangemeld met die naam word de thuismap verwijderd, klaar voor de volgende gast. Om dit automatisch te doen is er ook een systemd timer nodig. Voordat een timer zijn ding kan doen moet er ook een bijbehorende unit voor zijn. Die ziet er als volgt uit:
|
|
Plaats dit in een (nieuwe) service als /etc/systemd/system/guest-cleanup.service
. Dit wordt door de timer (die komt hieronder) aangeroepen en doet het echte werk. Dan nu: de timer. Dit doet niets meer dan ervoor zorgen dat systemd weet dat er een taak uitgevoerd moet worden, en wat die taak is. Het ziet er als volgt uit:
|
|
Plaats dit in een (nieuwe) timer als /etc/systemd/system/guest-cleanup.timer
. Dit word door systemd uitgelezen en uitgevoerd.
Herladen systemd en het activeren van de timer
Om er nu voor te zorgen dat systemd de nieuwe unit en timer oppikt en je ze kan activeren moet je systemd eerst herladen met het volgende commando $ sudo systemctl daemon-reload
.
Als je dat gedaan hebt kun je de timer activeren en starten. Dat kan met het volgende commando: $ sudo systemctl enable --now guest-cleanup.timer
.
Dit zal de timer (en de bijbehorende service) nu direct starten en deze bij volgende boots van de computer ook automatisch laten starten.