Samba-4.21.1

Introduksjon til Samba

Samba pakken gir fil og utskrifts tjenester til SMB/CIFS klienter og Windows nettverk til Linux klienter. Samba kan også konfigureres som en Windows Domenekontrollererstatning, en fil-/utskriftsserver som fungerer som medlem av et Windows Active Directory domene og et NetBIOS (RFC1001/1002) navneserver (som blant annet gir støtte for LAN surfing).

[Notat]

Notat

Utviklingsversjoner av BLFS kan ikke bygge eller kjøre noen pakker riktig hvis LFS eller avhengigheter har blitt oppdatert siden den siste stabile versjonene av bøkene.

Pakkeinformasjon

Samba Avhengigheter

Påkrevd

GnuTLS-3.8.8, jansson-2.14, libtirpc-1.3.6, lmdb-0.9.31, Parse-Yapp-1.21, og rpcsvc-proto-1.4.4

Anbefalt

Valgfri

Avahi-0.8, BIND-9.20.3, Cups-2.4.11, Cyrus SASL-2.1.28, GDB-15.2, git-2.47.0, GnuPG-2.4.6 (kreves for ADS og testpakken), libaio-0.3.113, libarchive-3.7.7 (for tar i smbclient), libcap-2.72 med PAM, libgcrypt-1.11.0, libnsl-2.0.1, libunwind-1.8.1, Markdown-3.7, nss-3.106, popt-1.19, Talloc-2.4.2 (inkludert), Vala-0.56.17, Valgrind-3.24.0 (valgfritt brukt av testpakken), xfsprogs-6.11.0, cmocka, cryptography, ctdb (inkludert), cwrap, dnspython, FAM, Gamin, GlusterFS, Heimdal (inkludert), iso8601, ldb (inkludert), OpenAFS, poetry-core (påkrevd for ADS), pyasn1, tevent (inkludert), tdb (inkludert), og tracker-2

Valgfri (for Utviklertestpakken)

Installer i oppført rekkefølge: six-1.16.0, pytest-8.3.3, argparse, testtools, testscenarios, og python-subunit

Redaktørens notater: https://wiki.linuxfromscratch.org/blfs/wiki/samba4

Installasjon av Samba

For å støtte testpakken, sett opp et virtuelt Pythonmiljø for noen Pythonmoduler utenfor omfanget av BLFS:

python3 -m venv pyvenv &&
./pyvenv/bin/pip3 install cryptography pyasn1 iso8601

Installer Samba ved å kjøre følgende kommandoer:

PYTHON=$PWD/pyvenv/bin/python3             \
./configure                                \
    --prefix=/usr                          \
    --sysconfdir=/etc                      \
    --localstatedir=/var                   \
    --with-piddir=/run/samba               \
    --with-pammodulesdir=/usr/lib/security \
    --enable-fhs                           \
    --without-ad-dc                        \
    --with-system-mitkrb5                  \
    --enable-selftest                      \
    --disable-rpath-install                &&
make

For å teste resultatene, kjør: PATH=$PWD/pyvenv/bin:$PATH make quicktest. Testpakken vil produsere linjer som ser ut som feil, men disse er ufarlige. De siste utdatalinjene skal rapportere "ALL OK" for en god testkjøring. En oppsummering av eventuelle feil finner du i ./st/summary.

[Notat]

Notat

I tillegg er testpakker for utviklere tilgjengelige. Hvis du har installert de valgfrie pythonmodulene ovenfor i det virtuelle Pythonmiljøet for å bygge denne pakken, kan du kjøre disse testene med make test. Det anbefales ikke for gjennomsnittsbyggeren, testene er rundt 290 SBU og over en gigabyte diskplass, og du bør forvente ~73 feil og ~30 mislykket fra 3000+ tester.

Fiks hardkodete baner til Python 3 tolken:

sed '1s@^.*$@#!/usr/bin/python3@' \
    -i ./bin/default/source4/scripting/bin/*.inst

Hvis du oppgraderer fra en gammel versjon av samba, som root bruker, fjerne de gamle Python støttefilene for å forhindre noen problemer:

rm -rf /usr/lib/python3.13/site-packages/samba

Fortsatt som root bruker, installer pakken:

make install &&

install -v -m644    examples/smb.conf.default /etc/samba &&

sed -e "s;log file =.*;log file = /var/log/samba/%m.log;" \
    -e "s;path = /usr/spool/samba;path = /var/spool/samba;" \
    -i /etc/samba/smb.conf.default &&

mkdir -pv /etc/openldap/schema                        &&

install -v -m644    examples/LDAP/README              \
                    /etc/openldap/schema/README.samba &&

install -v -m644    examples/LDAP/samba*              \
                    /etc/openldap/schema              &&

install -v -m755    examples/LDAP/{get*,ol*} \
                    /etc/openldap/schema

Parameterforklaringer

--enable-fhs: Tildeler alle andre filbaner på en måte som er i samsvar med Filesystem Hierarchy Standard (FHS).

--without-ad-dc: Deaktiver Active Directory Domain Controller funksjonalitet. Se Set up a Samba Active Directory Domain Controller for detaljert informasjon. Fjern denne bryteren hvis du har installert Pythonmodulene nødvendig for ADS støtte. Merk at BLFS ikke gir et samba oppstartsskript eller systemd enhet for en Active Directory domenekontroller.

--with-system-mitkrb5: Aktiverer bygging med systemversjonen av Kerberos. Dette reduserer sikkerhetssårbarheter og reduserer byggetiden. Fjern denne hvis du ikke har MIT Kerberos V5-1.21.3 installert.

--disable-rpath-install: Fjerner bibliotekinstallasjonsbanen fra innebygd delt biblioteksøk stier i de installerte binære kjørbare filene og delte bibliotekene. Når denne pakken er installert på standardplasseringen, blir biblioteket installasjonsveien er /usr/lib. Det søkes alltid etter den dynamiske linkeren, så det er ikke nødvendig bygge den inn i installerte filer.

--with-selftest-prefix=SELFTEST_PREFIX: Dette alternativet spesifiserer testpakkens arbeidsmappe (default=./st).

install -v -m644 examples/LDAP/* /etc/openldap/schema: Disse kommandoene brukes til å kopiere eksempler på Samba skjemaer til OpenLDAP schema mappen.

install -v -m644 ../examples/smb.conf.default /etc/samba: Dette kopierer en standard smb.conf fil i /etc/samba. Denne eksempelkonfigurasjonen vil ikke fungerer før du kopierer det til /etc/samba/smb.conf og gjør de nødvendige endringene for installasjonen. Se konfigurasjon seksjonen for minimumsverdier som må settes.

Konfigurere Samba

Konfigurasjonsfiler

/etc/samba/smb.conf

Skrive ut til SMB klienter

Hvis du bruker CUPS for utskriftstjenester, og du ønsker å skrive ut til en skriver koblet til en SMB klient, må du opprette en SMB bakstykkeenhet. For å opprette enheten, utfør følgende kommando som root bruker:

install -dvm 755 /usr/lib/cups/backend &&
ln -v -sf /usr/bin/smbspool /usr/lib/cups/backend/smb

Konfigurasjonsinformasjon

På grunn av kompleksiteten og de mange ulike bruksområdene for Samba, komplett konfigurasjon for alle pakkens kapasiteter er langt utenfor omfanget av BLFS boken. Denne delen gir instruksjoner for å konfigurere /etc/samba/smb.conf filen for to vanlige scenarier. Det komplette innholdet i /etc/samba/smb.conf vil avhenge av formålet med Samba installasjonen.

[Notat]

Notat

Du kan finne det lettere å kopiere de viste konfigurasjonsparametrene under inn i en tom /etc/samba/smb.conf fil i stedet for å kopiere og redigere standardfilen som nevnt i «Parameterforklaringer» seksjonen. Hvordan du oppretter/redigerer /etc/samba/smb.conf filen vil bli overlatt til deg. Sørg for at filen bare er skrivbar av root bruker (mode 644).

Scenario 1: Minimal frittstående installasjon av kun klient

Velg denne varianten hvis du kun vil overføre filer ved hjelp av smbclient, montere Windows delinger og skrive ut til Windows skrivere, og ønsker ikke å dele filene og skriverne dine med Windows maskiner.

En /etc/samba/smb.conf fil med følgende tre parametere er tilstrekkelig:

[global]
    workgroup = WORKGROUP
    dos charset = cp850
    unix charset = ISO-8859-1

Verdiene i dette eksemplet spesifiserer at datamaskinen tilhører en Windows arbeidsgruppe navngitt WORKGROUP, bruker cp850 tegnsett når du snakker med MS-DOS og MS Windows 9x, og at filnavnene er lagret i ISO-8859-1 koding på disken. Juster disse verdiene riktig for din installasjon. unix charset verdien må være den samme som utdataen av locale charmap når den utføres med LANG variabel satt til din foretrukne lokalitet, ellers vil ls kommandoen kanskje ikke vise filnavn på nedlastede filer riktig.

Det er ikke nødvendig å kjøre noen Samba servere i dette scenariet, så du trenger ikke å installere det medfølgende systemd enheten.

Scenario 2: Frittstående fil-/utskriftsserver

Velg denne varianten hvis du vil dele filene og skriverne dine til Windows maskiner i arbeidsgruppen din i tillegg til mulighetene beskrevet i scenario 1.

I dette tilfellet /etc/samba/smb.conf.default filen kan være en god mal å starte fra. Du bør også legge til «dos charset» og «unix charset» parametere til «[global]» seksjonen som beskrevet i Scenario 1 for å forhindre korrupsjon av filnavn. Av sikkerhetsmessige årsaker kan du definere path = /home/alice/shared-files, forutsatt at brukernavnet ditt er alice og du vil bare dele filene i den mappen, i stedet for hele home mappen. Bytt deretter ut homes med shared-files og endre også «comment» hvis du bruker konfigurasjonsfilen nedenfor eller /etc/samba/smb.conf.default for å lage din.

Følgende konfigurasjonsfil oppretter en separat delingsfil for hver brukers hjemmemappe og gjør også alle skrivere tilgjengelige for Windows maskiner:

[global]
    workgroup = WORKGROUP
    dos charset = cp850
    unix charset = ISO-8859-1

[homes]
    comment = Home Directories
    browseable = no
    writable = yes

[printers]
    comment = All Printers
    path = /var/spool/samba
    browseable = no
    guest ok = no
    printable = yes

Andre parametere du kanskje ønsker å tilpasse i «[global]» delen inkluderer:

    server string =
    security =
    hosts allow =
    load printers =
    log file =
    max log size =
    socket options =
    local master =

Referer til kommentarene i /etc/samba/smb.conf.default filen for informasjon angående disse parameterne.

Siden smbd og nmbd nissene er nødvendig i dette tilfellet, installer samba systemd enheten. Sørg for å kjøre smbpasswd (med -a alternativet for å legge til brukere) for å aktivere og angi passord for alle kontoer som trenger Samba tilgang. Bruke standard Samba passdb backend, alle brukere du prøver å legge til, må også eksistere i /etc/passwd filen.

Avanserte krav

Mer komplekse scenarier som involverer domenekontroll eller medlemskap er mulig. Slike oppsett er avanserte emner og kan ikke bli tilstrekkelig dekket i BLFS. Det er skrevet mange komplette bøker om disse temaene. Vær oppmerksom på at i noen scenarier for domenemedlemskap, winbindd nissen og tilsvarende systemd enhet trengs.

Gjestekonto

Standard Samba installasjonen bruker nobody brukeren for gjesttilgang til serveren. Dette kan overstyres ved å stille inn guest account = parameteren i /etc/samba/smb.conf filen. Hvis du bruker guest account = parameter, sørg for at denne brukeren eksisterer i /etc/passwd filen.

Systemd Enheter

For å starte Samba nissene ved oppstart, installer systemd enhetene fra blfs-systemd-units-20240916 pakken ved å kjøre følgende kommando som root bruker:

make install-samba

For å starte winbindd nissen ved oppstart, installer systemd enheten fra blfs-systemd-units-20240916 pakken ved å kjøre følgende kommando som root bruker:

make install-winbindd
[Notat]

Notat

Denne pakken kommer med to typer enheter: En tjenestefil og en socket fil. Tjenestefilen vil starte smbd nissen en gang ved oppstart og den vil fortsette å kjøre til systemet slår seg av. Socket filen vil få systemd til å lytte på smbd porten (standard 445, må redigeres for noe annet) og vil starte smbd nissen når noe prøver å koble til den porten og stoppe nissen når forbindelsen er avsluttet. Dette kalles socket aktivering og er analog med å bruke {,x}inetd på et SysVinit basert system.

Som standard brukes den første metoden - smbd nissen startes ved oppstart og stoppet ved avstengning. Hvis socket metoden er ønsket, må du kjøre følgende kommandoer som root bruker:

systemctl stop smbd &&
systemctl disable smbd &&
systemctl enable smbd.socket &&
systemctl start smbd.socket

Merk at bare smbd nissen kan socket aktiveres.

Innhold

Installerte Programmer: cifsdd, dbwrap_tool, dumpmscat, eventlogadm, gentest, ldbadd, ldbdel, ldbedit, ldbmodify, ldbrename, ldbsearch, locktest, masktest, mdsearch, mvxattr, ndrdump, net, nmbd, nmblookup, ntlm_auth, oLschema2ldif, pdbedit, profiles, regdiff, regpatch, regshell, regtree, rpcclient, samba-log-parser, samba-gpupdate, samba-regedit, samba-tool, sharesec, smbcacls, smbclient, smbcontrol, smbcquotas, smbd, smbget, smbpasswd, smbspool, smbstatus, smbtar, smbtorture, smbtree, tdbbackup, tdbdump, tdbrestore, tdbtool, testparm, wbinfo, og winbindd
Installerte Biblioteker: libdcerpc-binding.so, libdcerpc-samr.so, libdcerpc-server-core.so, libdcerpc.so, libndr-krb5pac.so, libndr-nbt.so, libndr.so, libndr-standard.so, libnetapi.so, libnss_winbind.so, libnss_wins.so, libsamba-credentials.so, libsamba-errors.so, libsamba-hostconfig.so, libsamba-passdb.so, libsamba-policy.cpython-311-x86_64-linux-gnu.so, libsamba-util.so, libsamdb.so, libsmbclient.so, libsmbconf.so, libsmbldap.so, libtevent-util.so, libwbclient.so, og filsystemer og støttemoduler under /usr/lib/{python3.13,samba}
Installerte Mapper: /etc/samba, /run/samba, /usr/include/samba-4.0, /usr/lib/python3.13/site-packages/samba, /usr/{lib,libexec,share}/samba, og /var/{cache,lib,lock,log,run}/samba

Korte Beskrivelser

cifsdd

er dd kommandoen for SMB

dbwrap_tool

brukes til å lese og manipulere TDB/CTDB databaser ved hjelp av dbwrap grensesnittet

dumpmscat

dumper innholdet i MS katalogfiler

eventlogadm

brukes til å skrive poster til hendelseslogger fra STDIN, legg til spesifiserte kilde og DLL hendelsesloggregisteroppføringer og vis aktive hendelsesloggnavn (fra smb.conf)

gentest

brukes til å kjøre tilfeldige generiske SMB operasjoner mot to SMB servere og viser forskjellene i oppførsel

ldbadd

er et kommandolinjeverktøy for å legge til poster til en LDB database

ldbdel

er et kommandolinjeverktøy for å slette LDB databaseposter

ldbedit

lar deg redigere LDB databaser ved å bruke ditt foretrukne skriveprogram

ldbmodify

lar deg endre poster i en LDB database

ldbrename

lar deg gi nytt navn til LDB databaser

ldbsearch

søker i en LDB database for poster som samsvarer med en spesifisert uttrykk

locktest

brukes til å finne forskjeller i låsing mellom to SMB servere

masktest

brukes til å finne forskjeller i jokertegn matching mellom Sambas implementering og den av en ekstern server

mdsearch

kjører Spotlight søkinger mot en SMB server

mvxattr

brukes til rekursivt å endre navn på utvidede attributter

ndrdump

er en DCE/RPC pakkefortolker og dumper

net

er et verktøy for administrasjon av Samba og eksterne CIFS servere, som ligner på net verktøyet for DOS/Windows

nmbd

er Samba NetBIOS navneserver

nmblookup

brukes til å spørre etter NetBIOS navn og tilordne dem til IP adresser

ntlm_auth

er et verktøy for å tillate ekstern tilgang til Winbind sin NTLM autentiseringsfunksjon

oLschema2ldif

konverterer LDAP skjemaer til LDB-kompatible LDIF

pdbedit

er et verktøy som brukes til å administrere SAM databasen

profiles

er et verktøy som rapporterer og endrer SIDer i Windows registerfiler

regdiff

er et Diff program for Windows registerfiler

regpatch

bruker registeroppdateringer på registerfiler

regshell

er en Windows registerfilleser som bruker readline

regtree

er en registervisning i tekstmodus

rpcclient

brukes til å utføre MS-RPC klientsidefunksjoner

samba-log-parser

analyserer winbind logger generert av Samba

samba-gpupdate

lar deg redigere Microsoft Group Policy Objects (GPOs)

samba-regedit

er et ncurses basert verktøy for å administrere Samba registeret

samba-tool

er hoved administrasjonsverktøyet for Samba

sharesec

manipulerer dele ACL tillatelser på SMB fildelinger

smbcacls

brukes til å manipulere Windows NT tilgangskontrolllister

smbclient

er et SMB/CIFS tilgangsverktøy som ligner på FTP

smbcontrol

brukes til å kontrollere kjørende smbd, nmbd og winbindd nisser

smbcquotas

brukes til å manipulere Windows NT kvoter på SMB fildelinger

smbd

er hoved Samba nissen som leverer SMB/CIFS tjenester til klienter

smbget

er et enkelt verktøy med wget-likt semantikk, som kan laste ned filer fra SMB servere. Du kan spesifisere filer du vil laste ned på kommandolinjen

smbpasswd

endrer en brukers Samba passord

smbspool

sender en utskriftsjobb til en SMB skriver

smbstatus

rapporterer aktuelle Samba forbindelser

smbtar

er et skallskript som brukes til å sikkerhetskopiere SMB/CIFS delinger direkte til Linux båndstasjoner eller til en fil

smbtorture

er en testpakke som kjører flere tester mot en SMB server

smbtree

er en tekstbasert SMB nettleser

tdbbackup

er et verktøy for å sikkerhetskopiere eller validere integriteten til Samba .tdb filer

tdbdump

er et verktøy som brukes til å skrive ut innholdet i en Samba .tdb fil

tdbrestore

er et verktøy for å opprette en Samba .tdb fil fra en tdbdump

tdbtool

er et verktøy som tillater enkel databasemanipulering fra kommandolinjen

testparm

sjekker smb.conf filen for riktig syntaks

wbinfo

spør en kjørende winbindd nisse

winbindd

løser navn fra Windows NT servere

libnss_winbind.so

gir Name Service Switch API funksjoner for å løse navn fra NT servere

libnss_wins.so

gir API funksjoner for Sambas implementering av Windows Internett navnetjeneste

libnetapi.so

gir API funksjoner for administrasjonsverktøyene som brukes for Samba og eksterne CIFS servere

libsmbclient.so

gir API funksjoner for Samba SMB klientverktøyene

libwbclient.so

tilbyr API funksjoner for Windows domeneklienttjenester