Mijn FreeBSD Server: Deel 4 - Samba

Door Lima op zondag 15 mei 2011 20:15 - Reacties (8)
Categorie: FreeBSD, Views: 5.686

Tot nu toe kunnen we eigenlijk nog niet echt veel doen met onze server. Het doel voor ogen is om zo eenvoudig mogelijk aan mijn bestanden te kunnen. Daarom wil ik zoveel mogelijk out-of-the-box functionaliteit. Hierdoor kies ik om de standaard Windows en Macintosh protocollen te ondersteunen. Dit is dus SMB/CIFS bij Windows en AFP voor Apple. In deze blog beperk ik mij tot de open source implementatie voor SMB/CIFS namelijk Samba.


http://www.samba.org/samba/style/2010/grey/bgHeader.png
Samba in het verleden en nu
Over Samba valt er niet zo extreem veel te vertellen van achterliggende theorie. Men probeert er naar te streven om Samba als een active directory domain controller te laten werken, maar tot voor kort waren ze daar nog niet in geslaagd. Het is wel al mogelijk om Samba als lid in een domein te laten werken. Wie niet bekend is met active directory heeft hier waarschijnlijk helemaal niks aan, maar het is voor veel administrators een must. Momenteel is versie 4.0 in ontwikkeling maar die is nog ver van stabiel, maar ze boeken vooruitgang.
Bij versie 4.0 gebruiken ze ook de nieuwe versie van het SMB protocol, wat veel efficiŽnter werkt en dus opnieuw voor een performance boost zou moeten zorgen.
Hands on
We gaan Samba compileren en niet installeren via een package. Waarom? Omdat we dan gebruik kunnen maken van van een speciale compilatie optie die zorgt voor een enorme performance boost. Deze optie is de AIO optie, dit staat voor Asynchrone Input/Ouput. Waarom dit resulteert in snellere file transfers kan ik niet meteen uitleggen, maar het is algemeen geweten dat dit de performance boost was die FreeBSD nodig had.
$ whereis samba35
$ cd /usr/ports/net/samba35
$ make config-recursive
#Hier moet je dus de AIO_SUPPORT optie aanvinken.
$ make install clean
Hierna moeten we nog allerlei configuratie opties instellen. De algemene werkwijze van in deel 2 geldt hier opnieuw, althans voor de basis.
$ /usr/local/etc/rc.d/samba rcvar
$ echo 'samba_enable="YES' >> /etc/rc.conf
Hierna kunnen we de samba service dus starten. Echter hebben we nog niks gewijzigd aan de standaard configuratie van Samba en zal er dus niet veel gebeuren.
smb.conf
In deze configuratie file worden alle opties van samba ingesteld. Hoe je dit wilt instellen hangt sterk af van je gewenste resultaat natuurlijk. Daarom zal ik hier mijn versie bespreken en hiermee waarschijnlijk de gemiddelde gebruiker op een erg goed spoor zetten voor aan de slag te gaan met zijn eigen configuratie.

Wat ik wou bij mijn setup is toegang voor zowel gasten als gebruikers met een login. Waarbij er een goeie beveiliging is voor alle accounts, zodat een gast bijvoorbeeld alleen maar kan lezen in bepaalde mappen en in 1 specifieke map kan schrijven. Ook het verbergen van bijvoorbeeld backup mappen voor alle gebruikers, zodat ze hier niks aan kunnen mispeuteren.
Algemene werkwijze
Als eerste zal ik een algemene werkwijze uitleggen waardoor je op een eenvoudige manier je configuratie kan wijzigen en testen. Hierdoor kan je dan zelf aan de slag en loop je (hopelijk) niet tegen stomme fouten die ik in het verleden wel heb gemaakt.

Het begint altijd met het aanpassen van de smb.conf file, ik ga hier niet een structurele wijziging van het smb.conf bestand doen, maar geef een commando dat je kan gebruiken om het bestand te wijzigen (wat je eigenlijk al zou moeten weten na het lezen van de vorige delen). Vergeet niet dat je hiervoor als root moet aangemeld zijn!
$ ee /usr/local/etc/smb.conf
#wijzigingen aanbrengen en opslaan
Nadat je wijzigingen hebt aangebracht gaan we eerst kijken of er geen syntax fout staat in het bestand of eventuele conflicten
$ testparm
Na een enter krijg je nu mooi een cleane output van je configuratie file. Dit kan erg handig zijn om je te laten helpen in een forum of IRC kanaal en voor jezelf ook natuurlijk.
Als alles er goed uit ziet dan kan je beslissen om de configuratie wijzigingen door te voeren.
$ /usr/local/etc/rc.d/samba restart
User Security
Voor meer informatie over allerhande configuratie opties verwijs ik je graag door naar de officiŽle documentatie. Maar voor nu bespreek ik kort waarom en hoe ik gebruik maak van user security.
In samba kan je per share de authenticatie regelen (Share-Level Security), en moet elke user dus per share zich apart aanmelden. Ook is het mogelijk om gebruik te maken van account in een gecentraliseerde omgeving zoals bijvoorbeeld active directory(Domain Security Mode). Dan blijft er nog user level security over. Hier worden de rechten op basis van de gebruikte user toegedeeld. Aangezien ik thuis geen active directory gebruik (en ook niet van plan ben), kan ik dit dus al van het lijstje schrappen. Ook is share-level security niet voldoende voor wat ik wil, dus ik moet user level security gebruiken.

Dit moet dus in je smb.conf staan:
security = user
Nu kan je dus voor ťťn of meerdere shares bepalen welke gebruiker welke rechten heeft. Hiervoor moet je natuurlijk wel eerst een gebruiker toevoegen aan de database van samba. Let op! Hiervoor moet je eerst een bestaand freebsd gebruiker hebben! We moeten hierbij even stilstaan wat deze gebruiker moet kunnen. Bij mij thuis is het bijvoorbeeld niet zo dat mijn zussen FreeBSD guru's zijn, die moeten dus geen ssh toegang hebben of dergelijke. Ik ga deze accounts puur gebruiken om restricties te kunnen toepassen op mappen en files.
$ adduser
Hierna krijg je een soort van wizard, waar je alles rustig kan invullen. Ik gebruik voor alle gebruikers thuis wel een andere login groep, zodat ik eenvoudig bijvoorbeeld "familie" kan toelaten tot bepaalde mappen in plaats van alle gebruikers te moeten opgeven.
Bij shell moet je dus invullen nologin. Hierdoor zullen deze gebruikers nooit toegang krijgen tot je operating system, alleen maar de shares via samba.

Als je hiermee klaar bent voegen we voor de desbetreffende gebruikers een samba gebruiker toe (kan prima met hetzelfde wachtwoord als de FreeBSD gebruiker, ze hebben toch geen toegang)
$ smbpasswd -a gebruikersnaam
Mijn smb.conf file
Hier bespreek ik elk aspect van mijn configuratie file, stuk voor stuk.
[global]
workgroup = MSHOME
server string = on5sl-server
map to guest = Bad User
log file = /var/log/samba/log.%m
max log size = 50
load printers = No
printcap name = /dev/null
disable spoolss = Yes
show add printer wizard = No
[printers]
printable = Yes
browseable = No
available = No
Het belangrijkste hieruit is de map to guest = Bad user. Hierdoor zal iemand die probeert te verbinden met de share maar geen account heeft gelijk wat kunnen invullen en dan als gast worden aangemeld. Wel is het zo als de gebruiker een correcte gebruikersnaam opgeeft dat deze een correct wachtwoord moet ingeven. Zo bestaat de kans niet dat een gebruiker denkt dat hij is aangemeld terwijl hij als gast is doorverwezen door een foutief wachtwoord. Erg handig dus :)
Verder heb ik ook de printer functionaliteit uitgeschakeld.
[NAS]
comment = Hoofdmap
path = /storage/samba/main
read only = No
create mask = 0664
directory mask = 0775
guest ok = Yes
veto files = .*/Temp*/
vfs objects = recycle
recycle:versions = yes
recycle:keeptree = yes
recycle:repository = /storage/samba/main/Prullenbak
De comment en path lijken me redelijk voor de hand liggend. De read only = No zorgt ervoor dat we dus ook kunnen schrijven in de share. Het zou kunnen dat dit standaard ingesteld staat, dit moet ik nog eens nagaan.
De create mask en directory mask zal voor mensen die ervaren zijn met linux eenvoudig te begrijpen zijn. Deze "maskers" regelen de rechten van de folders of bestanden die geschreven worden.

Voor een uitleg hoe deze getallen moeten worden gekozen verwijs ik door naar een wiki. Aan de hand van deze "maskers" kan je dus ook je permissies regelen op de mappen in je share, maar dan op filesystem niveau. Zo kan je verdere granulatie van de rechten toepassen en je geliefde zusjes alleen maar lees toegang geven tot je muziek maar geen schrijf rechten, zodat ze niet per ongeluk bestanden kunnen verwijderen.

Verder zien we nog guest ok = yes. Dit zorgt er uiteraard voor dat als er een gast is aangemeld deze toegang kan krijgen tot deze share.
De lijnen die hierna volgen zorgen ervoor dat er een prullenbak is op de share. Keeptree zorgt ervoor dat de folder structuur in de prullenbak behouden blijft, ik persoonlijk vind dit het handigst.
Afwerking
Na al deze instellingen zou je server nu in je netwerk moeten verschijnen met de desbetreffende shares die je gemaakt hebt. Indien dit niet zo is kan dit aan enorm veel instellingen liggen, dus post aub geen vragen als je server niet in je netwerk lijstje staat. Dan kan je verbinden met het ip adres van je server in de windows verkenner adresbalk door \\192.168.0.10 te typen (in dit voorbeeld is dat ip adres dus 192.168.0.10).
Wat ik doe is een klein scriptje laten opstarten in windows zodat hij automatisch verbinden met mijn server als netwerkschijf met de juiste login en paswoord. Daarvoor moet je een mountsamba.bat bestandje aanmaken en dit bewerken zodat dit erin komt te staan:
@echo off
net use z: \\192.168.0.10\NAS /user:on5sl *************
Dit moet je natuurlijk aanpassen naar jouw situatie. Dan moet je dit bestand nog in je opstarten map slepen in je start menu van windows en klaar is kees :)
Vergeef me de onvolledigheid van deze blogpost maar ik heb het momenteel enorm druk, updates zijn meer dan waarschijnlijk :)

Volgende: Poll: Download client + rss of Apple file sharing 08-'11 Poll: Download client + rss of Apple file sharing
Volgende: Mijn FreeBSD Server: Deel 3 - ZFS & Mail 12-'10 Mijn FreeBSD Server: Deel 3 - ZFS & Mail

Reacties


Door Tweakers user Rob, zondag 15 mei 2011 20:50

Vroeger compileerde ik mij ook suf, maar ben nu toch wel blij met binary's

Door Tweakers user i-chat, zondag 15 mei 2011 21:59

jammer dat het nog steeds niet op lijkt te schieten met smb4k... dat zou een hele revolutie moeten zijn,

maar wat het is met al die 'bouw je eigen server blogs' het WERKT NIET prettig,

als ik elke keer dat ik een userpermissie moet resetten, in cli moet duiken, nano of vim moet starten, en door talloze rijen met configs moet scrollen, dan krijg ik zowat geen werk gedaan..

ja je kunt het scripten, en ja je kunt van alle duizend tootljes elke cli equivilenten van buiten leren, - maar er is een reden voor de muis... ECHT WAAR..!

DUS is het elke dag weer balen dat er geen mensen zijn die homeserver plugins voor webmin bouwen (of zoiets)

Door Tweakers user JUDGExKTF, zondag 15 mei 2011 22:34

jammer dat het nog steeds niet op lijkt te schieten met smb4k... dat zou een hele revolutie moeten zijn,
De prereleases van Samba 4 zijn behoorlijk stable. Wat ik op de mailinglists lees is dat er al mensen zijn die hem in productie gebruiken. In mijn mini opstelling is hij nog nooit gecrashed en is hij stable.
als ik elke keer dat ik een userpermissie moet resetten, in cli moet duiken, nano of vim moet starten, en door talloze rijen met configs moet scrollen, dan krijg ik zowat geen werk gedaan..
Ik denk dat je hier wat overdrijft. Bijvoorbeeld het resetten van een wachtwoord is een enkel commando. Hoeveel keer klikken is het standaard in Windows om bij password resetten van een user te komen in Active Directory ?
maar er is een reden voor de muis... ECHT WAAR..!
Als ik alles met de muis zou moeten doen zou ik geen werk gedaan krijgen...

Door Tweakers user Blokker_1999, maandag 16 mei 2011 07:36

i-chat schreef op zondag 15 mei 2011 @ 21:59: maar er is een reden voor de muis... ECHT WAAR..!
Er is zeker een reden voor een muis, maar vele mensen kunnen niet meer werken zonder en dat op zich is ook een probleem. Vele taken op een PC kunnen zo veel sneller uitgevoerd worden met enkel en alleen het toetsenbord. Je moet alleen weten hoe het moet.

Ik durf bijvoorbeeld wedden dat ik sneller dan jij in de device manager weet te geraken in Windows. Bestandsbeheer met een OFM (zoals midnight commander) gaat een stuk vlotter dan met Windows verkenner. En als je in die OFM de muis achterwege laat gaan vele bewerkingen nog eens sneller.

De muis heeft zijn nut, zeker in meer complexe programmas zoals in Office, maar je mag de kracht van het toetsenbord of een CLI niet onderschatten.

Ook op de config files kan je staan roepen dat ze onhandig zijn. Maar in een goed gedocumenteerde config file vind je met een eenvoudige text search direct de waarde die je wenst aan te passen. Veel vlotter dan wanneer je in verschillende tabbladen of venster moet gaan zoeken waar die ene optie nu weer verborgen stond.

Ik ben blij dat men bijv. in Windows nu ook weer wat meer keyboard minded is. Type as you find in het startmenu is een zegen voor mensen die graag met het toetsenbord werken.

Door Tweakers user i-chat, maandag 16 mei 2011 07:50

JUDGExKTF schreef op zondag 15 mei 2011 @ 22:34:
[...]


De prereleases van Samba 4 zijn behoorlijk stable. Wat ik op de mailinglists lees is dat er al mensen zijn die hem in productie gebruiken. In mijn mini opstelling is hij nog nooit gecrashed en is hij stable.
ik ben al een tijdje aan het denken deze is te gaan proberen maar zoals ik aangaf ik gebruik liever de gui dan de cli...
[...]
Ik denk dat je hier wat overdrijft. Bijvoorbeeld het resetten van een wachtwoord is een enkel commando. Hoeveel keer klikken is het standaard in Windows om bij password resetten van een user te komen in Active Directory ?
als ik iets meer dan 10x moet doen, dan script ik het wel, - en een paswordreset was misschien een slecht voorbeeld, dus " Als ik alles met de muis zou moeten doen" gaat ook mij wel wat te ver, maar als ik net die 'fout' zoek, of die property waar ik al jaren niets me gedaan heb, of ... of ... of net weer die nieuwe features etc... - de cli is voor mijj veeel te ondoorzichtig om er goed mee te kunnen worden, - het is een geweldige manier om te automatiseren, maar niet om te beheren...

/mening...

@blokker, - die nieuwe zoekbalk in het startpannel vind ik ook heelijk, niet meer alle commandows uit je kop leren, maar ook wegkomen met de discriptive name... HEERLIJK, - ik zeg dus niet dat het toetsenbord kut is in tegendeel, de meeste dingen zijn makkelijk met je toetsenbord op te halen. maar er zijn zoveel opties, in software tegenwordig...

dat type as you find zou GEWELDIG zijn in een AD-tool lijst met alle atrutten en objecten, en een zoekveldje om doo al die namen waardes en [?] knopjes heen te zoeken, - goed kunnen zoeken, is in een dynamische omgeving zoveel belangrijker dan veel weten...

ik kan me bijna geen cli interface voorsellen die dat type-as-you-find gedoe goed implementeerd, want als er een bash dash of cash omgeving is die dat bied, dan ga ik vandaag nog experimenteren op m'n ubuntu box...

[Reactie gewijzigd op maandag 16 mei 2011 07:58]


Door Tweakers user JUDGExKTF, maandag 16 mei 2011 22:51

ik ben al een tijdje aan het denken deze is te gaan proberen maar zoals ik aangaf ik gebruik liever de gui dan de cli...
Samba 4 is een ADS implementatie. Je kan dan alle ADS tools die in Windows zitten gebruiken om je Samba 4 domein te beheren.
maar als ik net die 'fout' zoek, of die property waar ik al jaren niets me gedaan heb, of ... of ... of net weer die nieuwe features etc..
Tja voor en nadelen. Ik vind het juist onzettend makkelijk dat ik mijn hele config kan backuppen door even /etc te tarren. Vervolgens gaan configen en als ik het dan per ongeluk sloop kan ik altijd nog alles met 1 commando terug zetten. Zelfde geld voor backups maken van configuratie van hosts en het mergen van een nieuwe versie van een applicatie configuratie met me bestaande oude via diff. Of alle configuratie onder versie beheer zetten. Via GUI's zijn voorgaande voorbeelden vaak een drama.
want als er een bash dash of cash omgeving is die dat bied, dan ga ik vandaag nog experimenteren op m'n ubuntu box...
Hotwire wellicht ? https://picasaweb.google.com/cgwalters/HotwireScreenshots#

Door pe4mwt, zondag 24 juli 2011 12:45

Aan de hand van deze tutorial heb ik mijn eerste FreeBSD server opgezet en het was allemaal goed te volgen en te doen. Dus ten eerste: goed artikel!

Maar ik wel wat vraagjes:
Ik heb samba opgezet zoals hierboven en je spreekt over het per user instellen van rechten maar hoe dat moet leg je helaas niet uit. Dus hoe voer ik dat uit?

Verder kan ik nu vanaf mijn computer bij mijn raidz storage drive op de server maar daar houd het op, ik kan geen folders aanmaken en bestanden copieren. Dit ligt natuurlijk aan de rechten maar waar regel ik die?

Ik heb onder root de samba folder, main folder en de Prullenbak aangemaakt, kan dat er iets mee te maken hebben?Ik weet dat je met chmod enzo je folder rechten kunt aanpassen maar ik wil in de folder kunnen schrijven en de folders zelf mogen niet weg dus ik hoef niemand rechten te geven om die folders te kunnen wissen e.d.

En nou voor nog een laatste vraag, heel wat anders, na het lezen van de 4 artikelen en mijn server aan de hand daarvan instellen mis ik eigenlijk een stukje over veiligheid. Moet er niet een firewall geinstalleerd worden op de server? (en evt virusscanner...?) Handig als ik de server op mijn netwerk kan gebruiken maar ik moet geen mensen vanuit internet op mijn server hebben. Alhoewel ik het wel fijn zou vinden als ik zelf via internet vanuit een andere lokatie dan thuis mijn server kan benaderen. Een goed ingeregelde firewall lijkt me dan wel een must.

Door Tweakers user Lima, donderdag 28 juli 2011 17:52

pe4mwt schreef op zondag 24 juli 2011 @ 12:45:
Aan de hand van deze tutorial heb ik mijn eerste FreeBSD server opgezet en het was allemaal goed te volgen en te doen. Dus ten eerste: goed artikel!

Maar ik wel wat vraagjes...
@pe4mwt:

Per user instellen van rechten haal ik in deze paragraaf aan:
"Voor een uitleg hoe deze getallen moeten worden gekozen verwijs ik door naar een wiki. Aan de hand van deze "maskers" kan je dus ook je permissies regelen op de mappen in je share, maar dan op filesystem niveau. Zo kan je verdere granulatie van de rechten toepassen en je geliefde zusjes alleen maar lees toegang geven tot je muziek maar geen schrijf rechten, zodat ze niet per ongeluk bestanden kunnen verwijderen."
Je moet dus eens googlen voor hoe die chmod en chown commando's werken, en welke rechten jij wilt instellen. Ik geef toe dat dit misschien wat vaag is uitgelegd maar het staat enorm uitgebreid op verschillende sites. Daarom dat ik de rechten instellen buiten mijn blog liet vallen en een hyperlink naar de wiki gaf met de nodige uitleg.

De mappen aanmaken enzo heeft inderdaad met de rechten te maken dus ik moet je opnieuw naar hetzelfde verwijzen. Mijn prullenbak folder is 750, maar dat moet je voor jezelf uitmaken wat voor rechten je hierop wilt instellen. Met 750 krijgen mijn zussen bijvoorbeeld lees en schrijfrechten (door de 5 want iedereen zit in een groep familie bij mij) en kunnen dus in de prullenbak. Moest ik dat niet willen stel ik 700 in.

Dan je laatste vraag. De veiligheid van deze server is zoals hij nu bij jou is opgesteld al erg goed. Een firewall op deze server is niet nodig als hij achter een router hangt wat ik eigenlijk veronderstel. De mensen die dit niet doen weten meestal wel goed genoeg dat ze dan beter wel een firewall installeren. Een virusscanner?! Het is BSD, ik ga niet zeggen dat er geen virussen bestaan maar de kans dat je een virus zou oplopen is onbestaand in de praktijk. Het is geen Windows he ;)
Als je de ssh toegang hebt ingesteld zoals ik heb vermeld in een eerder artikel dan kan je normaal met filezilla via sftp aan je bestanden door je gewone user login te gebruiken :)

Reageren is niet meer mogelijk