• Skip to main content
  • Skip to primary sidebar

BSDFreaks.nl

For starters and advanced *BSD users

Tags

brand dmi enschede FreeBSD harddisk Hardware Howto's Howto's move new ports server serverruimte universiteit utwente

Console

Jailed Environment Project

August 23, 2002 by Rob

Jailed Environment Project

Ik ben bezig met een omgeving op te zetten die onder een bestaande omgeving draait. Hierbij kan je iedereen root access geven zonder dat zij de bovenliggende omgeving kunnen beschadigen. Op deze manier kan je dus zorgen dat mensen hun eigen omgeving zo kunnen configureren als zij willen. Tevens kunnen ze binnen deze jail experimenteren en als het fout gaat kan de jail vrij snel terug gezet worden. Oftewel prutsen zonder het écht
te verprusten.

Bij dit project gaat het mij er om om een zo veilig mogelijke omgeving te bouwen.

Wil je mee doen met dit project‚ je eigen ervaringen met jail delen‚ stuur dan een mailtje naar jep@laagje.net of plaats commentaar onderaan deze howto.

In deze howto gaan we een omgeving opzetten die onder een bestaande omgeving draait. Zorg dat je een aantal films klaar hebt liggen want het opzetten duurt een tijd.

We gaan een directory maken waaronder alle jails die je wilt hebben komen. Tevens zetten we een variable waar in staat waar we de jail neer willen zetten.

[shell]
# mkdir /jails/
# mkdir /jails/jailnaam
# D=/jails/jailnaam
[/shell]

Het volgende wat we gaan doen is het aan maken van de file tree die op een normale omgeving ook aanwezig is‚ nu alleen binnen de jail. Daarna gaan we de sources compilen en op de juiste plek laten neerzetten. Nu kan je gerust een filmpje gaan kijken of een taart bakken als je niet zo’n super snel systeem hebt.

[shell]
# cd /usr/src
# make hierarchy DESTDIR=$D
# make obj
# make depend
# make all
# make install DESTDIR=$D
[/shell]

Nu gaan we de default configuratie files neerzetten in /jails/jailnaam/etc/ (dit wordt dus binnen de jail /etc/).

[shell]
# cd /usr/src/etc/
# make distribution DESTDIR=$D NO_MAKEDEV=yes
[/shell]

Nu gaan we de benodige devices aanmaken binnen de jail. Omdat de jail zelf ook wat restricties heeft moeten we aangeven dat het een jail betreft. Binnen een jail mag je bijvoorbeeld niet bovenliggende schijven mounten of fdisk gebruiken.

[shell]
# cd $D/DEV/
# cp /dev/MAKEDEV .
# sh MAKEDEV jail
[/shell]

Omdat de kernel van de bovenliggende omgeving gebruikt wordt‚ moeten we in dit geval /dev/null linken aan de kernel.

[shell]
# cd $D
# ln -sf dev/null kernel
[/shell]

Voordat we de jail kunnen starten moeten we aan het bovenliggende systeem nog een aantal dingen veranderen. Bij deze situatie ga ik er vanuit dat het base systeem ip 192.168.1.1 heeft en de jail 192.168.1.2 krijgt. Nu moeten we er voor zorgen dat 192.168.1.2 dedicated door de jail gebruikt kan worden. Ik laat even zien hoe je ervoor zorgt dat syslogd‚ named‚ inetd‚ mysql‚ apache en sshd op 192.168.1.1 luisteren en niet op de andere. Zelf moet je controleren dat er verder geen andere applicaties gebruik maken van het ip dat bedoelt is voor de jail.

De volgende configuratie bestanden moet je op het base systeem editten.

/etc/rc.conf

[file]
syslogd_flags=”-ss”
inetd_flags=”-wW -a 192.168.1.1″
[/file]

/etc/ssh/sshd_config

[file]
ListenAddress 192.168.1.1
[/file]

/etc/namedb/named.conf

[file]
options
{
listen-on { 192.168.1.1; };
}
[/file]

/usr/local/etc/rc.d/mysql-server.sh

[file]
start)
if [ -x /usr/local/bin/safe_mysqld ]; then
/usr/local/bin/safe_mysqld –user=mysql –bind-address=192.168.1.1 > /dev/null & && echo -n ‘ mysql$
fi
;;
[/file]

/usr/local/etc/apache/httpd.conf

[file]
Listen 192.168.1.1:80
[/file]

Nu gaan we de jail zelf configureren.
Als je het met de hand wilt doen kan dat‚ maar we kopieren voor de zekerheid even sysinstall naar de jail.

[shell]
# cp /stand/sysinstall /jails/jailnaam/stand/
[/shell]

Nu gaan we de jail voor de eerste keer starten maar voordat we dat doen zorgen we wel dat het ip dat de jail
moet gaan gebruiken aanwezig is.

[shell]
# ifconfig alias 192.168.1.2 netmask 255.255.255.0
[/shell]

Daar gaat ie:
[shell]
# jail $D jailnaam.domein 192.168.1.2 /bin/sh
[/shell]

Je komt nu in de jail binnen als root. Nu kan je beginnen met het configureren van de jail. Doe dit via /stand/sysinstall of handmatig. Vergeet niet ssh te configureren binnen de jail en een gebruiker toe te voegen!

Als je klaar bent gaan we de jail echt in de achtergrond laten draaien:
[shell]
# exit
# jail $D jailnaam.domain 192.168.1.2 /bin/sh /etc/rc
[/shell]

Nu draait de jail in de achtergrond. Probeer eens te ssh-en naar het jail ip!

Succes! Ik wil graag horen hoe jullie bevindingen zijn met jail. Als jullie vragen/ideeën of commentaar hebben hoor ik het graag!

Groeten‚

Laagje
Ook op IRC te vinden

Filed Under: Console

Screen: disconnecten zonder terminal te sluiten

January 4, 2002 by Rob

Je kent het wel‚ je wilt op je co-located machine mysql + php + apache installeren. het downloaden duurt eeuwen en daarna gaat ‘make install’ bij de installatie vragen stellen. Je kunt het dus niet in de background draaien !

Heb je kabel dan laat je het lijntje lekker open staan‚ bel je echter in dan wordt zo’n installatie een dure grap. Het programma [b]screen[/b] is de oplossing.
[pagebreak]
Hieronder een testcase. de verdere toepassingen kun je zelf wel bedenken.

installeer screen
[shell]# /usr/ports/sysutils/screen/make install distclean
[/shell]

start screen nu met het volgende commando
[shell]# screen -mS Screenname
[/shell]

je zit nu in de “screen shell” start het programma top
[shell]# top
[/shell]

nu gaan we de verbinding netjes verbreken om er voor te zorgen dat top door blijft draaien
druk hiervoor de volgende toets combinaties
Ctrl + a
d

de d staat hier voor detach

je bent nu terug in je eigen bash shell verbreek de modem verbinding of log in iedergeval helemaal af van de server.

bel opnieuw in en maak een ssh/telnet verbinding met de colocated machine.
je moet weer aanloggen als dezelfde user als voorheen (Root is ons geval)

type dan
[shell]# screen -r
[/shell]

je bent nu weer terug in het programma top.

je kunt dit afsluiten door ‘q’ in te drukken.

Je kunt zelf vast legio situaties bedenken waarin dit erg handig is. de meest bekende is vast portupgrade. Hiermee kun je al je packages in een keer updaten. de upgrade kan echter wel uren duren. Tussendoor worden er vragen gesteld‚ je kunt portupgrade -ra dus niet in de background draaien. Dit is de oplossing ! Draai het in een screen‚ sluit de boel af‚ kijk een paar uur later weer een beantwoord de vragen. Ga lekker slapen en ga de volgende ochtend nog even een aantal vragen beantwoorden. dit doe je net zolang tot de upgrade af is. Het nadeel aan deze methode is: Als je niet regelmatig kijkt of portupgrade nog vragen heeft kan een upgrade wel een aantal dagen in beslag nemen. Omdat portupgrade staat te wachten op antwoorden van de gebruiker.

Filed Under: Console

[*BSD] Standaard commando’s

December 13, 2001 by Rob

Hieronder vind je een overzicht van de commando’s die je op een FreeBSD systeem
kunt gebruiken, doe er je voordeel mee.

Achter veel commando’s kun je zogenaamde ‘opties’ plaatsen. Daarmee dwing je het programma zich op een bepaalde manier uit te voeren, bijvoorbeeld de ‘output’ op een bepaalde manier te sorteren: bijvoorbeeld: het nieuwste bestand in een lijst als eerste te tonen.

Ook kun je commando’s ‘stapelen’, je laat de computer dan verschillende dingen achter elkaar (well.. eigenlijk: tegelijk..) doen, dus: verschillende bewerkingen uitvoeren op bijvoorbeeld een bestand.

[pagebreak]
Lijst van eenvoudige commando’s:

[b]passwd[/b]
Hiermee verander je je wachtwoord. Je vult eenmaal het oude wachtwoord in, en tweemaal het nieuwe.

[b]date[/b]
Toont de datum en tijd van de systeemklok.

[b]cd [directorynaam][/b]
ga naar de aangegeven directory.

[b]cd [directorynaam]/[subdirectorynaam]/[subsubdirectorynaam]/[/b]
ga naar de aangegeven subsub-directory.

[b]cd ..[/b]
ga naar een directory hoger.

[b]who[/b]
Toont welke gebruikers er nog meer ‘online’ zijn op de machine.

[b]mesg y[/b]
Verzoeken tot conversatie accepteer je vanaf nu.

[b]mesg n[/b]
Verzoeken tot conversatie weiger je vanaf nu.

[b]write [+naam van andere gebruiker][/b]
Start een dialoog met een andere gebruiker. Probeer je ‘wite’ en krijg je als antwoord ‘you have write permission turned off,’ dan heb je zelf ‘mesg n’ aan staan. Je kunt ‘mesg y’ -berichten accepteren- aanzetten met ‘mesg y’. Alles tot aan CTRL-D komt terecht in het venster van de andere gebruiker.

[b][CTRL] d[/b]
Controll-toets + D-toets sluit je tekst-stroom af. Stuurde je bijvoorbeeld tekst via ‘write’, dan beëindigt CTRL-D het ‘writen’ naar die andere persoon.

[b][CTRL] c[/b]
Controll-toets + C-toets onderbreekt je laatste actie. Stel dat je een eindeloze lijst ziet voorbijkomen na het commandootje ‘ls’ dan kun je die listing stoppen met CTRL-C

[b]pwd[/b]
Toont het ‘pad’ naar de actuele directory: de directory waar je je nu bevindt.

[b]ls[/b]
Toont de bestanden in de huidige directory.

[b]ls -a[/b]
Toont ook de onzichtbare bestanden in de huidige directory. Onzichtbare bestanden hebben onder Unix een naam die begint met een ‘.’ -punt.

[b]ls -l[/b]
Toont de toegangs-permissies van de zichtbare bestanden in de huidige directory.

[b]ls -la[/b]
Toont de toegangs-permissies van alle bestanden -ook de onzichtbare bestanden- in de huidige directory.

[b]ls -t[/b]
Toont de bestanden in de huidige directory, op chronologische volgorde, het nieuwste bestand als eerste.

[b]ls *html[/b]
Toont alle bestanden met een naam die eindigt op ‘html’. Dit * is een zogenaamde wildcard, en kun je op veel plekken gebruiken. Stel dat je bijvoorbeeld ‘ls a*’ intypt, dan volgt er een lijst van alle bestanden die beginnen met ‘a’.

[b]rm [bestandsnaam][/b]
verwijdert het aangegeven bestand.

[b]rm *[/b]
verwijdert alle bestanden in de directory. (Gevaarlijke optie dus..)

[b]rm -r [directory-naam][/b]
verwijdert de directory met alle bestanden in daarin. (Nog gevaarlijker optie dus..)

[b]mkdir [directorynaam][/b]
maakt een directory met de naam die je aangeeft.

[b]rmdir [directorynaam][/b]
verwijdert alleen een directory, wanneer die leeg is.

[b]man ls[/b]
‘man’ toont altijd de “manual page” (gebruiksaanwijzing) van het commando. Bij ‘man ls’ vindt je dus informatie over alle opties van het commando ls.

[b]man man[/b]
toont helaas niet de manual page van mannen 😉 Maar wel de gebruiksaanwijzing van de manual pages.

[b]chmod g-r,o-r [bestandsnaam][/b]
Wijzigt de toegangs-permissies; niemand, behalve de eigenaar van het bestand zelf, kan het nu nog lezen. ‘ls -l’ toont de bestandspermissies, in de eerste kolom.

De bestands-toegangs-permissies zijn alsvolgt ingedeeld:

-rwxrwxrwx
Dit bestand is leesbaar (r), schrijfbaar (w), uitvoorbaar (x) voor:

de gebruiker (u) – de eerste 3 karakters ‘rwx’
de groep waar hij inzit (g) – de tweede 3 karakters ‘rwx’
alle anderen (o) – de laatste 3 karakters ‘rwx’

door ‘chmod’ (change mode) in te voeren voor een bestand, en daarna de modus aan te geven, bijvoorbeeld ‘g-x’ (‘group mag niet meer uitvoeren’) of: ‘g+x’ (‘group mag wel uitvoeren’) of: ‘g+w’ (‘group mag nu schrijven’) wijzig je de bestandspermissies.

Je zult dit commando zeer veel tegenkomen wanneer je op/voor Internet werkt, en je bestanden toegankelijk wilt maken voor je bezoekers.

Precies hetzelfde doe je op een Mac, door in ‘Samengebruik’ aan te geven dat niemand een bestand mag ‘verplaatsen of hernoemen.’

[b]w[/b]
toont het totaal aantal gebruikers, hun naam, wat ze op dat moment (ongeveer) aan het doen zijn, en hoeveel ‘load’ (belasting van de machine) dat veroorzaakt op de machine. Is het ‘load’-gemiddelde hoger dan 1, dan zijn er processen (draaiende programmaatjes van gebruikers dus), die even wachten op tijd van de processor.

[b]uptime[/b]
toont de tijd dat de machine aan is, ‘up’ is, en de gemiddelde ‘load’ op de machine.

[b]cp [bestandsnaam] [nieuwe bestandsnaam][/b]
kopieert een bestand naar het nieuwe bestand, met de naam die je aangeeft.

[b]mv [bestandsnaam] [nieuwe bestandsnaam][/b]
geeft een bestand een nieuwe naam.

[b]mv [bestandsnaam] [directorynaam][/b]
verplaatst een bestand naar een andere directory.

[b]cat [bestandsnaam][/b]
stuurt de inhoud van een bestand naar het (beeld)scherm.

[b]cat [bestandsnaam] > [nieuwe bestandsnaam][/b]
stuurt de inhoud van een bestand naar een nieuw bestand.. Is hetzelfde als ‘cp’ -copy- dus..

[b]wc < [bestandsnaam][/b] 'wordcount' telt het aantal regels, woorden, en tekens in een bestand. Geeft 3 getallen, die resp. staan voor aantal regels, aantal woorden, en aantal tekens. [b]wc [bestandsnaam][/b] identiek aan 'wordcount' met < -teken; telt het aantal regels, woorden, en tekens in een bestand. Geeft 3 getallen, die resp. staan voor aantal regels, aantal woorden, en aantal tekens. Het < -teken gebruik je in sommige gevallen voor de duidelijkheid. [b]cat [bestandsnaam] | wc[/b] identiek aan 'wordcount'; telt het aantal regels, woorden, en tekens in een bestand. Geeft 3 getallen, die resp. staan voor aantal regels, aantal woorden, en aantal tekens. Je gebruikt hier het | [pipe]-teken, waarmee je de uitkomst van 1 opdracht (cat), doorgeeft aan een volgende opdracht (wc). [b]cat [bestandsnaam] | wc > [nieuwe bestandsnaam][/b]
slaat de 3 getallen van de ‘wordcount’ op in een nieuw bestand.

[b]wc -w[/b]
telt alleen het aantal woorden in het bestand.

[b]wc -l[/b]
telt alleen het aantal regels in een bestand.. Let op: wc telt hier het aantal harde returns, heb je 1 zin zonder return aan het eind, dan is de output dus 0.

[b]wc -c[/b]
telt alleen het aantal karacters (bytes) in een bestand.

[b]grep [woord] *[/b]
doorzoekt alle [*] bestanden van de huidige directory naar het opgegeven woord. Als ‘output’ geeft ‘grep’ dan de naam van het bestand, en de zin(nen) waarin het woord voorkomt.

Klinkt het onzinnig? Ja, mee eens 🙂 Toch is het een redelijk adequate methode om uit te vinden welke web-bestanden op een webserver je moet editten, wanneer er iets in voorkomt dat je er beslist uit wilt hebben. Sterker nog, met een paar stappen verder, schrijf je een klein scriptje dat alle bestanden voor je doorzoekt, en het woord vervangt door een ander woord.

[b]grep [woord] [bestandsnaam][/b]
doorzoekt het opgegeven bestand op het opgegeven woord. Als ‘output’ geeft ‘grep’ dan de zin(nen) waarin het woord voorkomt.

[b]grep [woord] [bestandsnaam] | wc[/b]
doorzoekt het opgegeven bestand op het opgegeven woord, en stuurt de output, -de zin(nen) waarin het woord voorkomt- door naar ‘wc’ -wordcount. De uiteindelijke output die je in beeld krijgt, zullen dus 3 getallen zijn, het aantal regels -waarin dat woord voorkomt-, het aantal woorden dat die zinnen bevatten, en aantal tekens van al die zinnen.

[b]grep [woord] [bestandsnaam] | wc -l[/b]
doorzoekt het opgegeven bestand op het opgegeven woord, en stuurt de output, -de zin(nen) waarin het woord voorkomt- door naar ‘wc’ -wordcount. Wordcount telt nu alleen het aantal regels waarin het woord voorkomt. Dus de output is een getal, dat gelijk is aan het aantal regels waarin het woord 1 of meer keer ;-( voorkomt.

[b]grep [woord] [bestandsnaam] | wc -l > [nieuwe bestandsnaam][/b]
doet exact hetzelfde als de vorige opdracht, maar slaat de output nu op in een nieuw bestand.

[b]top[/b]
toont alle processen op de computer. En ververst regelmatig het scherm. Dit lijkt dus op…. ‘Over deze Computer’ op de Mac, onder het Appeltje in de Finder. Je ziet hier alleen iets meer: je ziet bijv. het geheugenbeheer, welke processen ‘staan te slapen,’ -wachten op input- en vooral: welk proces de computer het zwaarst belast.

[b]ps -aux[/b]
lijkt op ‘top.’ Het toont welke processen er draaien, en onder welk nummer [Proces ID of ‘PID’] ze actief zijn. Je gebruikt dit commando als systeembeheerder om te achterhalen welk PID een proces heeft, om het bijvoorbeeld af te schieten met ‘KILL’ of te herstarten met ‘KILL -HUP.’

[b]ln -s [bestandsnaam] [linknaam][/b]
maakt een alias aan van het aangegeven bestand, en geeft die alias de naam [linknaam].

[b]ln -s [bestandsnaam] [directorynaam]/[linknaam][/b]
maakt een alias aan van het aangegeven bestand, plaats die alias in de aangegeven directory, en geeft die alias de naam [linknaam].

Dit kan bijzonder handig zijn, wanneer je besluit een oude URL [dus een oude HTML-pagina] niet meer te gebruiken, maar toch een verwijzing wilt plaatsen naar de nieuwe plek op je website.

[b]du[/b]
toont de omvang van de directory waarin je staat.

[b]df[/b]
toont hoeveel ruimte er in totaal aanwezig is op de harddisk.

[b]joe [bestandsnaam][/b]
start een eenvoudige tekstverwerker, en edit het aangegeven bestand. In de onderstaande afbeeldingen vind je enkele commando’s van ‘joe’:

[b]ee [bestandsnaam][/b]
start een eenvoudige tekstverwerker, en edit het aangegeven bestand. In de onderstaande afbeeldingen vind je enkele commando’s van ‘ee’:

[b]vi [bestandsnaam][/b]
start een complexe tekstverwerker, en edit het aangegeven bestand. ‘vi’ is anno 2000 af te raden, tenzij je de geek-status wilt bereiken 😉

[b]mail [gebruikersnaam][/b]
start een e-mail aan de aangegeven mede-gebruiker. ‘mail’ vraagt om een subject. Wanneer je dat hebt ingevuld, kun je je tekst typen. ‘mail’ is echter heel simple, je kunt alleen 1 zin backspacen als je een fout maakt. Beëindig je mail met een ‘.’ [punt] op een lege regel.
Op sommige unixsystemen moet je het programmaatje nog beëindigen met [CTRL] D.

[b]mail -v [gebruikersnaam][/b]
zelfde als vorige commando, alleen laat de computer nu zien wat hij doet.

[b]mail[/b]
haalt je mail op binnen de computer. Beëindig het lezen van je mail met [CTRL] D.

Filed Under: Console

[*BSD] Swapspace toevoegen

October 28, 2001 by Rob

Laatst had ik het probleem van te weinig swapspace op mijn server dus ben ik een beetje gaan zoeken hoe ik dat kon uitbreiden… en heb er toen meteen maar een kleine howto van gemaakt 🙂
[pagebreak]
Met de volgende commandos maak je een swap space aan van 512 MB

[shell]# cd /usr
# dd if=/dev/zero of=/usr/swap0 bs=32m count=16
[/shell]
Goeie rechten instellen
[shell]# chmod 640 swap0
[/shell]
[shell]# chgrp operator swap0
[/shell]
“/dev/vn0c /usr/swap0 swap” toevoegen aan de file /etc/vntab
[shell]# echo “/dev/vn0c /usr/swap0 swap” > /etc/vntab
[/shell]
[shell]# vnconfig -ae
[/shell]
Voeg het volgende stukje toe aan je rc.conf:

[shell]vnconfig_enable=”YES”

if [ “X${vnconfig_enable}” = X”YES” ]; then
echo -n ‘ vnconfig’; vnconfig -ae
fi
[/shell]

Succes ermee 🙂

Filed Under: Console

Primary Sidebar

Pages

  • Howto overview
  • iPhone mail setup
  • Links

Categories

  • *BSD news from the past
  • Console
  • Firewall
  • FreeBSD
  • FTP server
  • Hardware
  • Howto's
  • Installation
  • Kernel
  • Mail server
  • Miscellaneous
  • Networking
  • News
  • News imported
  • OpenBSD
  • Operating System
  • Programming
  • Security
  • Site news
  • Software
  • Sysutils
  • Web server

Recent Comments

  • admin on Qmail FreeBSD Mail Toaster Spam en virus control addon
  • admin on [FreeBSD] Het opzetten van een Vlan
  • Jap on [FreeBSD] Installing GlFtpd
  • Jap on [FreeBSD] Installing GlFtpd
  • Crashjuh on Wireless access point met OpenBSD + VPN

Copyright © 2025 · Genesis Sample Theme on Genesis Framework · WordPress · Log in