nerdstock.org

PROJECTEN | HANDLEIDINGEN | OVERIGE
Nederlands

Login menu

Dus je hebt een machine waar OpenSSH op draait, en je wilt een vriend/kennis/klant/leverancier/relatie/vreemde toegang geven, maar niet tot alles?
Zou het niet mooi zijn als je de gebruiker in kwestie een menu zou kunnen presenteren, waarbij de gebruiker kan kiezen uit een paar, door jou goedgekeurde, opties?
Lees verder…


Inhoudsopgave:


Eerst dit

Voor we verder gaan, wil ik natuurlijk wel weer even tegen je gezegd hebben dat je het allemaal op eigen risico doet.
Ik accepteer geen enkele verantwoordelijkheid voor enige actie die je onderneemt of nalaat naar aanleiding van deze handleiding.

Ook wil ik even vermeld hebben dat je jezelf niet moet wijsmaken dat je met onderstaande setup iets aan beveiliging hebt gedaan; het beveiligen van een computer behelst meer dan het schrijven van een menuutje. Wat we hier doen, doen we voor het gemak, niet voor de veiligheid.


Dit heb je nodig

Voor het maken van dialoogvensters gebruik ik in het voorbeeld hieronder cdialog, maar andere dialog-varianten zouden ook gewoon moeten werken. cdialog vind je in de FreeBSD ports collectie in /usr/ports/devel/cdialog; Debian, RPM, Mac OSX packages en de broncode kun je downloaden via freshmeat.

Verder heb ik ontdekt dat cdialog's bij gebruik van PuTTY niet mooi worden, als ik niet ook ncurses installeer (in ieder geval als de server FreeBSD draait). Als je bij het gebruik van cdialog iets te zien krijgt dat opgebouwd is uit letters en leestekens, installeer dan ook ncurses:

root@freebsd# cd /usr/ports/devel/ncurses
root@freebsd# make install clean
root@freebsd# cd /usr/ports/devel/cdialog
root@freebsd# make deinstall && make reinstall


Voorbereidingen

Ik denk dat het, ter voorbereiding, handig is om eerst eens bekend te raken met cdialog. Begin daarom met het lezen van de manual page.

rob@freebsd$ man cdialog


Heel goed, nu heb je tenminste een idee.
Nu moet er natuurlijk even geëxperimenteerd worden. Laten we beginnen met een klassieker:
rob@freebsd$ cdialog --msgbox 'Hello world!' 10 50
Hé, da's leuk…
Nu met wat peper in z'n kont:
rob@freebsd$ cdialog --backtitle 'backtitle' --shadow --title 'title' --msgbox 'Hello world!' 10 50
Nou ja, de rest laat ik aan je eigen fantasie over; je weet nu in ieder geval wat cdialog doet.

cdialog kan gebruik maken van een configuratiebestand waarin je dingen als schaduw en kleuren kunt definiëren, zodat je die niet met ieder commando hoeft mee te geven. We gaan daar straks gebruik van maken, dus genereren we er nu even één:

rob@freebsd$ cdialog --create-rc ~/development/loginmenu/loginmenu.cfg
Bewerk nu het bestand loginmenu.cfg naar je eigen smaak.


Het menu

Omdat dit slechts een voorbeeld is houd ik het simpel, de gebruiker krijgt de keuze uit 3 opties:

Het script vind je op deze pagina; het wordt gedocumenteerd in de code.


Installeren

Nu is het tijd om het menu te installeren

root@freebsd# cd /home/rob/development/loginmenu/
root@freebsd# mkdir /usr/local/etc/loginmenu
root@freebsd# chown root:wheel ./loginmenu ./loginmenu.cfg ./help ./contactinfo
root@freebsd# chmod 644 ./loginmenu.cfg ./help ./contactinfo
root@freebsd# mv ./loginmenu.cfg ./help ./contactinfo /usr/local/etc/loginmenu/
root@freebsd# chmod 755 loginmenu
root@freebsd# ./loginmenu
root@freebsd# mv loginmenu /usr/local/bin/
en het menu in te stellen als de standaard login shell voor de gebruiker
root@freebsd# pw usermod user01 -s /usr/local/bin/loginmenu
(ervanuit gaande dat de gebruiker 'user01' heet).

Op deze manier krijgt de gebruiker het menu te zien als hij inlogt via ssh (of telnet, maar dat gebruik je toch asjeblieft niet?). Ook kan de gebruiker geen gebruik meer maken van FTP. Als je wilt dat de gebruikers wel gebruik kunnen maken van FTP, voeg het menu dan toe aan /etc/shells:

root@freebsd# echo "/usr/local/bin/loginmenu" >> /etc/shells


Hello world!

Reacties zijn welkom:
rob[at]nerdstock.org
Creative Commons License
http://creativecommons.org/licenses/by-nc-sa/3.0/nl/deed.nl

 


-i *.nerdstock.org/*
Nerds don't google, they grep.

HoudtVan.je
http://www.houdtvan.je
Setara
http://setara.org
Dannik
http://dannik.nl
FaciliPro
http://facilipro.nl
OhReally.nl
http://OhReally.nl
Ads by Nerdstock.org

Link: Op deze site gebruikte handelsmerken