Een hoofdletter ongevoelig bestandssysteem.

Waarom

We kennen allemaal slordige programmeurs die met slordige programmeer omgevingen op slordige besturingssystemen de prachtigste programma's maken. Als we dit programma's vervolgens op onze nette servers in productie proberen te nemen blijkt het programma aan te nemen da;
Een/bestand/in/een/Map
bij dezelfde inode uitkomt als
een/BESTAND/IN/een/map
En daar sta je dan.

Wat

Linux kent een aantal bestandssystemen die zeker case sensitive zijn. Dit zijn onder andere: Ext2/3/4, JFS, XFS, UFS, ZFS, HFS, HFS+
Andere suggereren case insensitive te kunnen opereren hoewel ik dat nog niet werkend heb waargenomen oa: Reiserfs en ciopfs.

Een werkende manier om een bestandssyteem werkelijk hoofdletterongevoelig te krijgen is d.m.v. smb. Ik leg hier uit hoe dat in zijn werk gaat.

Hoe

Ik gebruik Ubuntu 9.04 maar in princiepe zouden de volgende stappen op iedere linux distro moeten werken. het is wel handig als het een op deb georienteerd systeem is.

Stap 1: Installeer samba server, smbfs en samba client.

sudo apt-get install samba smbfs smbclient

Stap 2: Share een directory op je loopback device (127.0.0.1)

We gaan het bestand /etc/samba/smb.conf aanpassen. Dit is het server configuratie bestand van samba. Ik gebruik nu even gedit voor het gemak van de meeste lezers maar je hoort dit werk natuurlijk in vi te doen.
sudo gedit /etc/samba/smb.conf

In dit bestand vind je een gedeelte over Networking dat ziet er ongeveer zo uit:
#### Networking ####

# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
;   interfaces = 127.0.0.0/8 eth0

# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself.  However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
;   bind interfaces only = yes

Dit gaan we aanpassen zodat onze server straks alleen nog maar reageert op onze loopback interface. Zo weten we zeker dat we buitenstaanders weren. Maak van dit gedeelte:
#### Networking ####
# Aangepast door boose
# Ik wil samba enkel als locale dienst gebruiken om een
# hoofdletter ON gevoelig bestandssysteem te realiseren

interfaces = lo
bind interfaces only = yes

Wie mijn achternaam heeft laten staan in de veronderstelling dat dat iets uitmaakt moet eens goed nadenken over een carrier move.

Het hoofdstuk Authentication is het moeilijkste en het belangrijkste van de samba server configuratie. Samba is oorspronkelijk een microsoft netwerk protocol dat alle netwerkdiensten probeert te combineren. naast file sharing kun je er ook printer mee bedienen en een directory mee beheren. Een directory is een soort objecten database van computers, gebruikers, wachtwoorden, groepen, locaties, rechten enz.

Dit hoofdstuk,   Authentication bepaald welk type server we gaan spelen en hoe we met gebruikers, groepen en wachtwoorden wensen om te gaan.
Ik zal je het originele hoofdstuk besparen. Dit is wat ik er van maak voor onze locale loopback toepassing.



Stap 3: Maak een nieuwe lege directory


Stap 4: Mount de share naar de lege map


Stap 5: Test je hoofdletterongevoelige bestandssysteem



Comments