Sharing Files between Ubuntu 20.04 and Windows Systems with Samba
On 21 stycznia, 2022 by adminAlthough Linux has made some inroads into the desktop market, its origins and future are very much server-based. Nie jest więc zaskoczeniem, że Ubuntu ma możliwość działania jako serwer plików. Jest to również bardzo powszechne dla systemów Ubuntu i Windows, aby być używane obok siebie w środowiskach sieciowych. Jest więc powszechnym wymogiem, aby pliki w systemie Ubuntu były dostępne dla systemów Linux, UNIX i Windows poprzez połączenia sieciowe. Podobnie, foldery współdzielone i drukarki rezydujące na systemach Windows mogą również wymagać dostępu z systemów opartych na Ubuntu.
Systemy Windows współdzielą zasoby, takie jak systemy plików i drukarki za pomocą protokołu znanego jako Server Message Block (SMB). Aby system Ubuntu mógł obsługiwać takie zasoby przez sieć do systemu Windows i na odwrót, musi zatem obsługiwać SMB. Osiąga się to za pomocą technologii zwanej Samba. Oprócz zapewnienia integracji między systemami Linux i Windows, Samba może być również używana do udostępniania folderów między systemami Linux (jako alternatywa dla NFS, który został omówiony w poprzednim rozdziale).
W tym rozdziale przyjrzymy się krokom niezbędnym do udostępniania zasobów systemu plików i drukarek w systemie Ubuntu zdalnym systemom Windows i Linux, a także do uzyskiwania dostępu do zasobów Windows z Ubuntu.
1.1 Dostęp do zasobów Windows z pulpitu GNOME
Zanim zagłębimy się w szczegóły udostępniania Samby, warto zauważyć, że jeśli wszystko, co chcemy zrobić, to uzyskać dostęp do folderów współdzielonych Windows z pulpitu GNOME Ubuntu, to wsparcie jest już zapewnione w programie Pliki GNOME. Aplikacja Pliki znajduje się w pulpicie, jak pokazano na Rysunku 23-1:
Rysunek 23-1
Po uruchomieniu, wybierz opcję Inne lokalizacje w lewym panelu nawigacyjnym, a następnie ikonę Sieć Windows w panelu głównym, aby przeglądać dostępne zasoby Windows:
Rysunek 23-2
1.2 Samba i Samba Client
Samba umożliwia zarówno współdzielenie zasobów Ubuntu z systemami Windows, jak i współdzielenie zasobów Windows z systemami Ubuntu. Ubuntu uzyskuje dostęp do zasobów Windows za pomocą klienta Samby. Z drugiej strony, zasoby Ubuntu są współdzielone z systemami Windows poprzez zainstalowanie i skonfigurowanie usługi Samba.
1.3 Instalacja Samby w systemie Ubuntu
Domyślne ustawienia używane podczas procesu instalacji Ubuntu zazwyczaj nie instalują niezbędnych pakietów Samby. Jeśli nie poprosiłeś o zainstalowanie Samby, jest mało prawdopodobne, że masz zainstalowaną Sambę w systemie. Aby sprawdzić, czy Samba jest zainstalowana, otwórz okno terminala i wykonaj następujące polecenie:
# apt -qq list samba-common samba smbclient
Wszelkie brakujące pakiety mogą być zainstalowane za pomocą narzędzia wiersza poleceń apt:
# apt install samba-common samba smbclient
1.4 Konfigurowanie zapory Ubuntu, aby włączyć Sambę
Następnie, zapora obecnie chroniąca system Ubuntu musi być skonfigurowana tak, aby umożliwić ruch Samby.
Jeśli używasz Nieskomplikowanego Firewalla (ufw) wykonaj następujące polecenie:
# ufw allow samba
Alternatywnie, jeśli używasz firewalld, wykonaj polecenie firewall-cmd w następujący sposób:
# firewall-cmd --permanent --add-port={139/tcp,445/tcp}# firewall-cmd --reload
Przed uruchomieniem usługi Samba konieczne jest wykonanie szeregu czynności konfiguracyjnych, które pozwolą określić, jak system Ubuntu będzie prezentował się systemom Windows, oraz jakie zasoby mają być współdzielone ze zdalnymi klientami. Większość z tych zadań konfiguracyjnych odbywa się w pliku /etc/samba/smb. conf.
1.5 Konfigurowanie pliku smb.conf
Samba jest bardzo elastycznym i konfigurowalnym systemem, który zapewnia wiele różnych opcji kontroli, jak zasoby są udostępniane w sieciach Windows. Ta elastyczność może prowadzić do wrażenia, że Samba jest zbyt skomplikowana w pracy. W rzeczywistości jednak wiele opcji konfiguracyjnych nie jest potrzebnych w typowej instalacji, a krzywa uczenia się podstawowej konfiguracji jest w rzeczywistości dość krótka.
Dla celów tego rozdziału przyjrzymy się dołączeniu systemu Ubuntu do grupy roboczej Windows i ustawieniu katalogu jako zasobu współdzielonego, do którego dostęp może mieć określony użytkownik. Jest to konfiguracja znana jako samodzielny serwer Samba. Dostępne są również bardziej zaawansowane konfiguracje, takie jak integracja Samby ze środowiskiem Active Directory, jednak wykraczają one poza zakres tej książki.
Pierwszym krokiem w konfiguracji Samby jest edycja pliku /etc/samba/smb.conf.
1.5.1 Konfiguracja sekcji
Plik smb.conf jest podzielony na sekcje. Pierwsza sekcja jest sekcją, w której można określić ustawienia, które odnoszą się do całej konfiguracji Samby. Chociaż ustawienia te są globalne, każda opcja może być nadpisana w innych sekcjach pliku konfiguracyjnego.
Pierwszym zadaniem jest określenie nazwy grupy roboczej Windows, na której mają być udostępniane zasoby Ubuntu. Jest to kontrolowane poprzez dyrektywę workgroup = sekcji, która domyślnie jest skonfigurowana w następujący sposób:
workgroup = WORKGROUP
Zacznij od zmiany tego na rzeczywistą nazwę grupy roboczej, jeśli to konieczne.
Oprócz ustawienia grupy roboczej pozostałe ustawienia wskazują, że jest to serwer autonomiczny, na którym współdzielone zasoby będą chronione hasłami użytkowników. Przed przejściem do konfiguracji zasobów, które mają być współdzielone, do sekcji należy dodać również inne parametry, jak poniżej:
.. netbios name = LinuxServer..
Właściwość „netbios name” określa nazwę, pod jaką serwer będzie widoczny dla innych systemów w sieci.
1.5.2 Konfiguracja zasobów współdzielonych
Następnym krokiem jest konfiguracja zasobów współdzielonych (innymi słowy zasobów, które będą dostępne z innych systemów w sieci Windows). Aby to osiągnąć, sekcji nadajemy nazwę, pod którą będzie się ona odwoływać w przypadku udostępniania. Na przykład, jeśli planujemy udostępnić katalog /sampleshare naszego systemu Ubuntu, możemy nadać sekcji tytuł . W tej sekcji możliwe są różne opcje konfiguracyjne. Dla celów tego przykładu jednak, po prostu zdefiniujemy katalog, który ma być współdzielony, wskażemy, że katalog jest zarówno przeglądalny, jak i zapisywalny oraz zadeklarujemy zasób jako publiczny, aby użytkownicy-goście mogli uzyskać dostęp:
comment = Example Samba share path = /sampleshare browseable = Yes public = yes writable = yes
Aby ograniczyć dostęp do konkretnych użytkowników, można użyć właściwości „valid users”, na przykład:
valid users = demo, bobyoung, marcewing
1.5.3 Usuwanie niepotrzebnych udziałów
Plik smb.conf jest wstępnie skonfigurowany z sekcjami do udostępniania drukarek i folderów domowych użytkowników w systemie. Jeśli te zasoby nie muszą być współdzielone, odpowiednie sekcje mogą zostać wykomentowane tak, aby były ignorowane przez Sambę. W poniższym przykładzie sekcja została wykomentowana:
..## comment = Home Directories# valid users = %S, %D%w%S# browseable = No# read only = No# inherit acls = Yes..
1.6 Tworzenie użytkownika Samby
Każdy użytkownik, który wymaga dostępu do współdzielonego zasobu Samby, musi zostać skonfigurowany jako użytkownik Samby i otrzymać hasło. To zadanie jest wykonywane za pomocą narzędzia wiersza poleceń smbpasswd. Rozważmy na przykład, że użytkownik o nazwie demo musi mieć możliwość dostępu do katalogu /sampleshare naszego systemu Ubuntu z systemu Windows. Aby spełnić to wymaganie, musimy dodać demo jako użytkownika Samby w następujący sposób:
# smbpasswd -a demoNew SMB password:Retype new SMB password:Added user demo.
Teraz, gdy zakończyliśmy konfigurację bardzo podstawowego serwera Samby, nadszedł czas na przetestowanie naszego pliku konfiguracyjnego, a następnie uruchomienie usług Samby.
1.7 Testowanie pliku smb.conf
Ustawienia w pliku smb.conf mogą być sprawdzone pod kątem błędów za pomocą narzędzia wiersza poleceń testparm w następujący sposób:
# 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 Uruchamianie usług nazw Samba i NetBIOS
Aby serwer Ubuntu mógł pracować w sieci Windows, zarówno usługi Samba (SMB), jak i NetBIOS nameservice (NMB) muszą być uruchomione. Opcjonalnie należy również włączyć te usługi, aby były uruchamiane przy każdym starcie systemu:
# systemctl enable smbd# systemctl start smbd# systemctl enable nmbd# systemctl start nmbd
Przed próbą połączenia z systemu Windows należy użyć narzędzia smbclient, aby sprawdzić, czy udział jest skonfigurowany:
# 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 Uzyskiwanie dostępu do udziałów Samby
Gdy zasoby Samby są skonfigurowane, a usługi uruchomione, nadszedł czas, aby uzyskać dostęp do udostępnionego zasobu z systemu Windows. Na odpowiednim systemie Windows w tej samej grupie roboczej co system Ubuntu, otwórz Eksploratora Windows i przejdź do panelu Sieć. W tym momencie eksplorator powinien przeszukać sieć i wyświetlić listę wszystkich systemów korzystających z protokołu SMB, które znajdzie. Poniższy rysunek ilustruje system Ubuntu o nazwie LINUXSERVER zlokalizowany za pomocą Eksploratora Windows w systemie Windows 10:
Rysunek 23-3
Podwójne kliknięcie na hoście LINUXSERVER spowoduje wyświetlenie monitu o podanie nazwy i hasła użytkownika z uprawnieniami dostępu. W tym przypadku jest to konto demo, które skonfigurowaliśmy za pomocą narzędzia smbpasswd:
Rysunek 23-4
Wprowadzenie nazwy użytkownika i hasła spowoduje, że w oknie eksploratora pojawią się zasoby współdzielone skonfigurowane dla tego użytkownika, w tym wcześniej skonfigurowany zasób /sampleshare:
Rysunek 23-5
Dwukrotne kliknięcie na zasób współdzielony /sampleshare spowoduje wyświetlenie listy zawartych w nim plików i katalogów.
Jeśli nie możesz zobaczyć systemu Linux lub masz problemy z dostępem do folderu współdzielonego, spróbuj zmapować udział Samby na lokalny dysk Windows w następujący sposób:
- Otwórz Eksploratora plików Windows, kliknij prawym przyciskiem myszy pozycję Sieć w lewym panelu i z menu wynikowego wybierz Mapuj dysk sieciowy…
- W oknie dialogowym Mapuj dysk sieciowy wybierz literę dysku przed wprowadzeniem ścieżki do folderu współdzielonego. Na przykład:
\LinuxServer\sampleshare
Włącz pole wyboru obok opcji Połącz przy użyciu innych danych uwierzytelniających. Jeśli nie chcesz, aby dysk był mapowany przy każdym logowaniu do systemu Windows, wyłącz odpowiednie pole wyboru:
Rysunek 23-6
Po wprowadzeniu ustawień kliknij przycisk Zakończ, aby zmapować dysk, wprowadzając po wyświetleniu monitu nazwę użytkownika i hasło użytkownika Samby skonfigurowanego wcześniej w rozdziale. Po krótkim czasie zawartość udziału Samby pojawi się w nowym oknie Eksploratora plików.
1.10 Dostęp do udziałów Windows z Ubuntu
Jak już wcześniej wspomniano, Samba jest dwukierunkowa, pozwalając nie tylko systemom Windows na dostęp do plików i drukarek hostowanych w systemie Ubuntu, ale także pozwalając systemowi Ubuntu na dostęp do współdzielonych zasobów w systemach Windows. Osiąga się to za pomocą pakietu smbclient, który został zainstalowany na początku tego rozdziału. Jeśli nie jest on obecnie zainstalowany, zainstaluj go z okna terminala w następujący sposób:
# apt install smbclient
Dostęp do współdzielonych zasobów w systemie Windows można uzyskać zarówno z pulpitu Ubuntu za pomocą aplikacji Pliki, jak i z wiersza poleceń za pomocą narzędzi smbclient i mount. Kroki w tej sekcji zakładają, że odpowiednie ustawienia udostępniania sieci zostały włączone w systemie Windows.
Aby uzyskać dostęp do wszelkich udostępnionych zasobów w systemie Windows za pomocą pulpitu GNOME, należy rozpocząć od uruchomienia aplikacji Pliki i wybrania opcji Inne lokalizacje. Spowoduje to wyświetlenie ekranu pokazanego na rysunku 23-7 poniżej, zawierającego ikonę sieci Windows (jeśli taka została wykryta):
Rysunek 23-7
Wybranie opcji Sieć Windows spowoduje wyświetlenie systemów Windows wykrytych w sieci i umożliwi dostęp do wszelkich współdzielonych zasobów.
Rysunek 23-8
Alternatywnie można użyć opcji Połącz z serwerem, aby połączyć się z określonym systemem. Zauważ, że nazwa lub adres IP zdalnego systemu muszą być poprzedzone smb:// i może po nich następować ścieżka do określonego współdzielonego zasobu, na przykład:
smb://WinServer10/Documents
1.11 Podsumowanie
.
Dodaj komentarz