#Klooienmetcomputers

Samba!

Arnout van Kempen over rommelen in een digitale wereld.

Als alles een beetje moet samenwerken, is het wel handig als bestanden makkelijk overgezet kunnen worden tussen het ene en het andere apparaat.

De simpelste oplossing die ik daarvoor gevonden heb, is het opzetten van een Samba-server op de Raspberry Pi. Samba is de makkelijke naam voor SMB, ofwel Server Message Block-protocol. Wat het simpel gezegd doet, is directories die je wil sharen zichtbaar maken op een ander systeem in je netwerk. In mijn geval betekent dat dus dat ik op mijn iPad bestanden en folders kan benaderen alsof ze lokaal staan. Voor maximale controle ga ik niet een specifieke share-folder maken, maar gewoon de complete home-directory van de Raspberry sharen met de iPad.

Hoe werkt dat? Uitgaande van gebruiker "pi" en systeemnaam "pi4b", doe je het volgende in een terminal-venster:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install samba samba-common-bin

Hiermee is de benodigde software geïnstalleerd. Nu moet in de configuratie van de samba-server worden aangegeven welke directory je wil sharen, welke bevoegdheden de externe gebruiker moet krijgen (alles) en tenslotte of iedereen toegang moet krijgen (nee!). Dit doe je met:

sudo nano /etc/samba/smb.conf

Je komt nu in de tekst-editor nano. Hier ga je met pijltjestoetsen naar het einde van het bestand en daar voeg je toe:

[pi4bshare]
path=/home/pi
writeable=Yes
create mask=0777
directory mask=0777
public=no

Als je dat hebt toegevoegd, sluit je af met Ctrl-X (voortaan genoteerd als ^X), gevolgd door Y en Enter.
Bedenk dat pi in dit voorbeeld wel de user in Pi OS is, maar nog niet in de samba-server. Dat doen we alsnog met

sudo smbpasswd -a pi

Je moet nu tweemaal een te kiezen wachtwoord voor deze gebruiker invoeren. Als je anderen toegang wil geven kun je meerdere gebruikers maken, maar bedenk dan wel dat ze toegang krijgen tot dezelfde share en met dezelfde rechten, tenzij je dat anders regelt in smb.conf

Nu moet de samba-server herstart worden met

sudo systemctl restart smbd

Hiermee loopt de samba-server. Op het andere systeem moet je nu alleen nog verbinding maken met deze server. Op een iPad doe je dat in de Files-app. Linksboven kies je voor de drie puntjes, Verbind met server, en je vult als server smb://<systeemnaam van je pi> in. In mijn geval smb://pi4b

Vervolgens kan je de samba-gebruiker en het wachtwoord invullen. Je ziet nu de folders van de share in je files-app verschijnen, met alle mogelijkheden die je iPad biedt. Onder Windows of MacOS werkt het min of meer vergelijkbaar, alleen even zoeken waar de optie zit om met een externe server te verbinden.

Arnout van Kempen di CCO CISA is directeur compliance & risk bij aaff, de fusieorganisatie van Alfa en ABAB. Hij schrijft op persoonlijke titel.

Gerelateerd

4 reacties

Arnout van Kempen / ChatGPT

Overigens zegt ChatGPT hierover:

Linux gebruikt het bestandspermissiesysteem om te voorkomen dat andere gebruikers een bestand wijzigen dat al door een andere gebruiker is geopend. Wanneer een gebruiker een bestand opent, wordt er een "file lock" gecreëerd op het bestand. Dit bestandsvergrendelingsmechanisme zorgt ervoor dat andere gebruikers geen schrijftoegang hebben tot het bestand terwijl de eerste gebruiker het nog open heeft.

Het bestandspermissiesysteem van Linux omvat drie soorten toestemmingen: read (lezen), write (schrijven) en execute (uitvoeren). Wanneer een gebruiker een bestand maakt, worden de standaard toestemmingen voor de eigenaar, de groep en de rest van de wereld toegewezen aan het bestand. De eigenaar heeft meestal volledige toegang tot het bestand (lezen, schrijven en uitvoeren), terwijl de groep en de rest van de wereld alleen beperkte toegang hebben, afhankelijk van de ingestelde permissies.

Wanneer een gebruiker een bestand opent, worden de toestemmingen van het bestand tijdelijk aangepast om alleen lezen en schrijven door de gebruiker toe te staan, terwijl anderen geen toegang tot het bestand hebben. Dit voorkomt dat andere gebruikers het bestand wijzigen terwijl de eerste gebruiker het nog open heeft.

Als een andere gebruiker toch probeert om het bestand te wijzigen terwijl het door een andere gebruiker is geopend en vergrendeld, krijgt hij/zij een foutmelding te zien en kan hij/zij het bestand niet wijzigen.

Arnout van Kempen

Het tweede punt had ik me nog helemaal niet gerealiseerd, dus dank daarvoor!

Ik ben zelf ofwel op de iPad, ofwel op de Pi bezig, dus een dergelijk conflict ligt nog niet voor de hand. Maar je hebt natuurlijk gelijk dat dit relevant is, bijvoorbeeld als ik een groot bestand laat bewerken op de Pi en het intussen op de iPad zou benaderen.

Ik moet je daar voorlopig het antwoord op schuldig blijven, anders dan dat ik weet hoe dat “vroeger” tenminste in theorie ging. Het OS zou een bestand dat door een proces wordt aangevraagd moeten locken voor andere processen. Linux en iPadOS zijn allebei in essentie UNIX en zouden dus beiden over die logica moeten beschikken. Maar ik weet het nog niet in de praktijk.

Arnout van Kempen

Met het eerste punt worstel ik zelf nog. Als je in Pi OS automatisch mount, dan wordt een externe SSD gemount in /media/pi (als je user pi bent). Daarmee valt deze dus buiten de directorystructuur van ~

Ik ben nog aan het zoeken hoe ik dat kan aanpassen, hoewel ik daar weer over twijfel om een andere reden: als je meerdere gebruikers op je Pi hebt, dan wil je juist dat een SSD voor alle gebruikers eenvoudig te vinden is. Dan is een mount buiten de ~ directory waarschijnlijk handiger.

Je kan je afvragen waarom je meerdere gebruikers zou willen natuurlijk, maar ik ben daar tegenaan gelopen toen ik MySQL installeerde (dat wilde nog wel) en daar de grafische schil van PHPmyAdmin omheen wilde leggen. Die laatste wil een nieuwe gebruiker hebben. Dus ik zit nu met twee gebruikers, die allebei makkelijk toegang tot de SSD moeten hebben.

Ik ben er nog niet uit.

Adrian Egas

Ha Arnout, leuk dat je dit soort praktische oplossingen deelt, waarmee je de Pi als dataserver kan gebruiken.
2 vragen die ik erbij heb:
1. Is het zo dat je door de complete home directory te delen ook eventuele andere harde schijven (SSD's via USB gekoppeld aan Pi) zichtbaar hebt op de iPad?
2. Wat gebeurd er als je hetzelfde bestand benaderd op de iPad, alsook op de Pi zelf en deze bewerkt? Hoe gaat Samba om met evt. conflicten of ontstaat er voor 1 vd 2 devices op dat moment alleen een Alleen-lezen modus?

Reageren op een artikel kan tot drie maanden na plaatsing. Reageren op dit artikel is daarom niet meer mogelijk.

Aanmelden nieuwsbrief

Ontvang elke werkdag (maandag t/m vrijdag) de laatste nieuwsberichten, opinies en artikelen in uw mailbox.

Bent u NBA-lid? Dan kunt u zich ook aanmelden via uw ledenprofiel op MijnNBA.nl.