Dela filer mellan Ubuntu 20.04 och Windows-system med Samba
On januari 21, 2022 by adminOch även om Linux har gjort vissa inbrytningar på marknaden för skrivbordssystem är dess ursprung och framtid i hög grad serverbaserad. Det är därför inte förvånande att Ubuntu har förmågan att fungera som en filserver. Det är också mycket vanligt att Ubuntu- och Windows-system används sida vid sida i nätverksmiljöer. Det är därför ett vanligt krav att filer på ett Ubuntu-system ska vara tillgängliga för Linux-, UNIX- och Windows-baserade system via nätverksanslutningar. På samma sätt kan delade mappar och skrivare som finns på Windows-system behöva vara tillgängliga från Ubuntu-baserade system.
Windows-system delar resurser som filsystem och skrivare med hjälp av ett protokoll som kallas Server Message Block (SMB). För att ett Ubuntu-system ska kunna tillhandahålla sådana resurser via ett nätverk till ett Windows-system och vice versa måste det därför ha stöd för SMB. Detta uppnås med hjälp av teknik som kallas Samba. Förutom att tillhandahålla integration mellan Linux- och Windows-system kan Samba också användas för att tillhandahålla mappdelning mellan Linux-system (som ett alternativ till NFS som behandlades i föregående kapitel).
I det här kapitlet kommer vi att titta på de steg som krävs för att dela filsystemresurser och skrivare på ett Ubuntusystem med fjärrstyrda Windows- och Linux-system, och för att få tillgång till Windows-resurser från Ubuntu.
1.1 Åtkomst till Windows-resurser från GNOME-skrivbordet
Innan vi går in på mer detaljer om Samba-delning är det värt att notera att om allt du vill göra är att komma åt delade Windows-mappar från Ubuntus GNOME-skrivbord så finns det redan stöd i programmet GNOME Files. Files-applikationen finns i streckfältet som markeras i figur 23-1:
Figur 23-1
När den är lanserad väljer du alternativet Andra platser i den vänstra navigeringspanelen följt av ikonen för Windows-nätverk i huvudpanelen för att bläddra bland tillgängliga Windows-resurser:
Figur 23-2
1.2 Samba och Samba Client
Samba gör det möjligt att dela både Ubuntu-resurser med Windows-system och Windows-resurser med Ubuntu-system. Ubuntu får tillgång till Windows-resurser med hjälp av Samba-klienten. Ubuntu-resurser delas å andra sidan med Windows-system genom att installera och konfigurera Samba-tjänsten.
1.3 Installera Samba på ett Ubuntusystem
De standardinställningar som används under Ubuntu-installationsprocessen installerar vanligtvis inte de nödvändiga Samba-paketen. Om du inte uttryckligen har begärt att Samba ska installeras är det osannolikt att du har Samba installerat på ditt system. För att kontrollera om Samba är installerat öppnar du ett terminalfönster och kör följande kommando:
# apt -qq list samba-common samba smbclient
De paket som saknas kan installeras med hjälp av kommandoradsverktyget apt:
# apt install samba-common samba smbclient
1.4 Konfigurera Ubuntus brandvägg för att aktivera Samba
Nästan måste den brandvägg som för närvarande skyddar Ubuntusystemet konfigureras för att tillåta Samba-trafik.
Om du använder Uncomplicated Firewall (ufw) kör du följande kommando:
# ufw allow samba
Alternativt, om du använder firewalld, kör du kommandot firewall-cmd enligt följande:
# firewall-cmd --permanent --add-port={139/tcp,445/tcp}# firewall-cmd --reload
För att starta Samba-tjänsten krävs ett antal konfigurationssteg för att definiera hur Ubuntu-systemet kommer att se ut för Windows-system och vilka resurser som ska delas med fjärrklienter. Majoriteten av dessa konfigurationsåtgärder sker i filen /etc/samba/smb. conf.
1.5 Konfigurera filen smb.conf
Samba är ett mycket flexibelt och konfigurerbart system som ger många olika alternativ för att styra hur resurser delas i Windows-nätverk. Denna flexibilitet kan leda till en känsla av att Samba är alltför komplicerat att arbeta med. I verkligheten är dock många av konfigurationsalternativen inte nödvändiga för den typiska installationen, och inlärningskurvan för att ställa in en grundläggande konfiguration är faktiskt ganska kort.
I det här kapitlet kommer vi att titta på att ansluta ett Ubuntusystem till en Windows-arbetsgrupp och ställa in en katalog som en delad resurs som kan nås av en specifik användare. Detta är en konfiguration som kallas en fristående Samba-server. Mer avancerade konfigurationer som att integrera Samba i en Active Directory-miljö finns också tillgängliga, men dessa ligger utanför den här bokens räckvidd.
Det första steget i konfigurationen av Samba är att redigera filen /etc/samba/smb.conf.
1.5.5.1 Konfigurera avsnittet
Filen smb.conf är indelad i avsnitt. Det första avsnittet är det avsnitt där inställningar kan anges som gäller för hela Samba-konfigurationen. Även om dessa inställningar är globala kan varje alternativ åsidosättas i andra avsnitt i konfigurationsfilen.
Den första uppgiften är att definiera namnet på den Windows-arbetsgrupp på vilken Ubunturesurserna ska delas. Detta styrs via direktivet workgroup = i avsnittet som som standard är konfigurerat på följande sätt:
workgroup = WORKGROUP
Börja med att ändra detta till arbetsgruppens faktiska namn om det behövs.
Förutom arbetsgruppsinställningen visar de andra inställningarna att detta är en fristående server där de delade resurserna kommer att skyddas av användarlösenord. Innan vi går vidare till att konfigurera de resurser som ska delas måste även andra parametrar läggas till i avsnittet enligt följande:
.. netbios name = LinuxServer..
Gegenskapen ”netbios name” anger det namn som servern kommer att vara synlig med för andra system i nätverket.
1.5.5.2 Konfigurera en delad resurs
Nästan är det dags att konfigurera de delade resurserna (med andra ord de resurser som kommer att vara åtkomliga från andra system i Windows-nätverket). För att uppnå detta ges sektionen ett namn som den kommer att refereras till när den är delad. Om vi till exempel planerar att dela katalogen /sampleshare i vårt Ubuntusystem kan vi ge sektionen namnet . I det här avsnittet är en mängd olika konfigurationsalternativ möjliga. I det här exemplet definierar vi dock helt enkelt den katalog som ska delas, anger att katalogen är både bläddrings- och skrivbar och förklarar resursen offentlig så att gästanvändare kan få åtkomst:
comment = Example Samba share path = /sampleshare browseable = Yes public = yes writable = yes
För att begränsa åtkomsten till specifika användare kan egenskapen ”valid users” användas, till exempel:
valid users = demo, bobyoung, marcewing
1.5.3 Ta bort onödiga delningar
Filen smb.conf är förkonfigurerad med avsnitt för delning av skrivare och hemmappar för användarna i systemet. Om dessa resurser inte behöver delas kan motsvarande avsnitt kommenteras ut så att de ignoreras av Samba. I följande exempel har avsnittet kommenterats ut:
..## comment = Home Directories# valid users = %S, %D%w%S# browseable = No# read only = No# inherit acls = Yes..
1.6 Skapa en Samba-användare
Alla användare som kräver åtkomst till en delad Samba-resurs måste konfigureras som en Samba-användare och tilldelas ett lösenord. Denna uppgift utförs med hjälp av kommandoradsverktyget smbpasswd. Tänk till exempel på att en användare som heter demo måste kunna komma åt katalogen /sampleshare i vårt Ubuntusystem från ett Windows-system. För att uppfylla detta krav måste vi lägga till demo som en Samba-användare enligt följande:
# smbpasswd -a demoNew SMB password:Retype new SMB password:Added user demo.
När vi nu har slutfört konfigurationen av en mycket grundläggande Samba-server är det dags att testa vår konfigurationsfil och sedan starta Samba-tjänsterna.
1.7 Testning av filen smb.conf
Inställningarna i filen smb.conf-filen kan kontrolleras för fel med hjälp av kommandoradsverktyget testparm enligt följande:
# testparmLoad smb config files from /etc/samba/smb.confrlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)WARNING: The "syslog" option is deprecatedProcessing section ""Processing section ""Processing section ""Loaded services file OK.Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parametersdns proxy = Nolog file = /var/log/samba/log.%mmap to guest = Bad Usermax log size = 1000netbios name = LINUXSERVERobey pam restrictions = Yespam password change = Yespanic action = /usr/share/samba/panic-action %dpasswd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .passwd program = /usr/bin/passwd %usecurity = USERserver role = standalone serverserver string = %h server (Samba, Ubuntu)syslog = 0unix password sync = Yesusershare allow guests = Yeswins support = Yesidmap config * : backend = tdb browseable = Nocomment = All Printerscreate mask = 0700path = /var/spool/sambaprintable = Yes comment = Printer Driverspath = /var/lib/samba/printers comment = Example Samba shareguest ok = Yespath = /sampleshareread only = No
1.8 Starta Samba- och NetBIOS-namntjänsterna
För att en Ubuntu-server ska kunna fungera i ett Windows-nätverk måste både Samba- (SMB) och NetBIOS-namntjänsterna (NMB) startas. Eventuellt kan du också aktivera tjänsterna så att de startar varje gång systemet startar:
# systemctl enable smbd# systemctl start smbd# systemctl enable nmbd# systemctl start nmbd
För att försöka ansluta från ett Windows-system använder du verktyget smbclient för att kontrollera att resursen är konfigurerad:
# smbclient -U demo -L localhost Enter WORKGROUP\demo's password: Sharename Type Comment--------- ---- -------print$ Disk Printer Driverssampleshare Disk Example Samba shareIPC$ IPC IPC Service (demo-server2 server (Samba, Ubuntu))Officejet_Pro_8600_C7C718_ Printer Officejet_6600_971B9B_ Printer Reconnecting with SMB1 for workgroup listing. Server Comment--------- ------- Workgroup Master--------- -------WORKGROUP LINUXSERVER
1.9 Åtkomst till Samba-utdelningar
Nu när Samba-resurserna är konfigurerade och tjänsterna körs är det dags att komma åt den delade resursen från ett Windows-system. På ett lämpligt Windows-system i samma arbetsgrupp som Ubuntu-systemet öppnar du Windows Explorer och navigerar till panelen Nätverk. Vid det här laget bör utforskaren söka i nätverket och lista alla system som använder SMB-protokollet som den hittar. Följande figur illustrerar ett Ubuntusystem med namnet LINUXSERVER som lokaliseras med hjälp av Windows Explorer på ett Windows 10-system:
Figur 23-3
Dubbelklicka på värddatorn LINUXSERVER och du kommer att uppmanas att ange namn och lösenord för en användare med åtkomsträttigheter. I det här fallet är det demokontot som vi konfigurerade med verktyget smbpasswd:
Figur 23-4
Inmatning av användarnamn och lösenord resulterar i att de delade resurserna som konfigurerats för den användaren visas i utforskarfönstret, inklusive den tidigare konfigurerade resursen /sampleshare:
Figur 23-5
Dubbelklicka på den delade resursen /sampleshare för att visa en lista över de filer och kataloger som finns där.
Om du inte kan se Linux-systemet eller har problem med att komma åt den delade mappen kan du försöka mappa Samba-resursen till en lokal Windows-enhet på följande sätt:
- Öppna Windows Utforskaren, högerklicka på posten Nätverk i den vänstra panelen och välj Mappa nätverksenhet… från den resulterande menyn.
- I dialogrutan Mappa nätverksenhet väljer du en enhetsbeteckning innan du anger sökvägen till den delade mappen. Till exempel:
\LinuxServer\sampleshare
Aktivera kryssrutan bredvid Anslut med olika autentiseringsuppgifter. Om du inte vill att enheten ska mappas varje gång du loggar in i Windows-systemet, avaktiverar du motsvarande kryssruta:
Figur 23-6
Med inställningarna inlagda klickar du på knappen Slutför för att mappa enheten, och anger användarnamn och lösenord för den Samba-användare som konfigurerades tidigare i kapitlet när du blir tillfrågad. Efter en kort fördröjning visas innehållet i Samba-resursen i ett nytt fönster i Utforskaren.
1.10 Åtkomst till Windows-resurser från Ubuntu
Som tidigare nämnts är Samba en tvåvägskommunikation, som inte bara gör det möjligt för Windows-systemen att få tillgång till filer och skrivare som finns på ett Ubuntusystem, utan också gör det möjligt för Ubuntusystemet att få tillgång till delade resurser på Windows-systemen. Detta uppnås med hjälp av paketet smbclient som installerades i början av det här kapitlet. Om det inte är installerat för närvarande kan du installera det från ett terminalfönster enligt följande:
# apt install smbclient
Delade resurser på ett Windows-system kan nås antingen från Ubuntus skrivbord med hjälp av programmet Filer, eller från kommandoradsprompten med hjälp av verktygen smbclient och mount. Stegen i det här avsnittet förutsätter att lämpliga inställningar för nätverksdelning har aktiverats på Windows-systemet.
För att komma åt delade resurser på ett Windows-system med hjälp av GNOME-skrivbordet börjar du med att starta programmet Filer och välja alternativet Andra platser. Då visas skärmen som visas i Figur 23-7 nedan inklusive en ikon för Windows Network (om ett sådant upptäcks):
Figur 23-7
Väljer du Windows Network-alternativet visas de Windows-system som upptäcks i nätverket och ger tillgång till eventuella delade resurser.
Figur 23-8
Alternativt kan alternativet Anslut till server användas för att ansluta till ett specifikt system. Observera att namnet eller IP-adressen för fjärrsystemet måste föregås av smb:// och kan följas av sökvägen till en specifik delad resurs, till exempel:
smb://WinServer10/Documents
Lämna ett svar