Samba – udostępnianie plików w domowej sieci – cz.1

Uwaga: Ten wpis został utworzony ponad rok temu. Informacje w nim zawarte mogą być nieaktualne!

W pierwszej części serii artykułów o Sambie, jak i moim pierwszym, chcę przedstawić jakże pomocny w wielu domach sposób na udostępnianie plików (drukarek również, ale o tym może innym razem :) ) między systemami Windows i Linux. Oczywiście Samba sama w sobie jest dosyć potężnym oprogramowaniem, niemniej jednak my wykorzystamy ją do bardzo prostych rzeczy. Często się zdarza, że potrzebujemy udostępnić pliki na Windowsie i dostać się do nich z naszego Ubuntu i odwrotnie. Poniższy sposób, to minimum konfiguracji, aby szybko dostać się do zasobu bez usera i bez hasła.

Przede wszystkim musimy pobrać i zainstalować Sambę:

sudo apt-get install samba

Następnym krokiem do utworzenia udostępnionego katalogu jest edycja pliku konfiguracyjne smb.conf znajdującego się najpewniej w /etc/samba/. Oczywiście utworzymy sobie najpierw kopię:

cd /etc/samba
sudo cp smb.conf smb_old.conf
sudo gedit smb.conf

Budowa pliku konfiguracyjnego jest intuicyjna:
parametr = wartość
lecz ze względu na bogate opisy poszczególnych funkcji można dostać epilepsji. Dlatego proponuję od razu wyczyścić cały plik i zapisać konfigurację od zera. Poniżej przedstawiona konfiguracja jeszcze niczego nie udostępnia, lecz pozwala ‚zobaczyć’ maszynę w Komputery grupy roboczej:

[global]
workgroup = DOM
netbios name = serwerek
server string = domowy serwer plikow
security = share

A teraz po kolei:

  • [global]
    Główna sekcja konfiguracji Samby, zawiera parametry, które odnoszą się do działania całego serwera.
  • workgroup
    Nazwa grupy roboczej, w której pracują wszystkie komputery w sieci, ważne aby nie zapomnieć ustawić jej na komputerach z Windows.
  • netbios name
    Nazwa, pod jaką pojawi się komputer w Komputery grupy roboczej.
  • server string
    Dodatkowa informacja pokazywana w Komputery grupy roboczej.
  • security
    Ustawia zabezpieczenie, wartość oznacza, że jest to zabezpieczenie na poziomie zasobów, co jest na razie wystarczające.
  • Po zapisaniu pliku, należy jeszcze zrestartować serwer samby przez:

    sudo service smbd restart

    Teraz na komputerze z systemem Windows możemy kliknąć w Komputery grupy roboczej i pojawi się tam nasz serwerek. Wewnątrz jeszcze nic nie będzie, bo nic nie udostępniamy, ale wiemy przynajmniej że samba działa tak jak powinna. Spróbujmy więc udostępnić jakiś katalog z naszego komputera. W tym celu ponownie otwieramy plik smb.conf do edycji z uprawnieniami root`a i dopisujemy kolejne linijki:

    comment = pierwszy udostepniony katalog
    path = /moja/share
    create mask = 0777
    directory mask = 0777
    browsable = yes
    writable = yes
    guest ok = yes
    
  • comment
    Wiadomo :).
  • path
    Ścieżka do katalogu, jaki chcemy udostępnić, musi on mieć ustawione prawa 0777 aby każdy mógł zapisywać w tym katalogu (jeśli oczywiście tego chcemy).
  • create mask
    Prawa dostępu, z jakimi będą tworzone nowe pliki, w naszym przypadku pełne prawa dla każdego.
  • create mask
    Jak wyżej, tyle że dla katalogów.
  • browsable
    Parametr określa czy dany zasób ma być widoczny dla klientów.
  • writable
    Parametr określa możliwość tworzenia i modyfikowania istniejących plików i katalogów.
  • guest ok
    Parametr umożliwia dostęp do zasobu bez podawania hasła.
  • Tak jak wcześniej, zapisujemy plik, restartujemy Sambę i mamy udostępniony katalog, który widać na każdym komputerze w naszej grupie roboczej.

    W drugą stronę sytuacja jest znacznie prostsza, gdyż po instalacji samby w menu Miejsca->Sieć mamy wpis Sieć Windows. Po wejściu widzimy naszą grupę roboczą a wewnątrz niej wszystkie uruchomione komputery naszej grupy roboczej wraz z ich udostępnionymi katalogami. Należy pamiętać, że system Windows automatycznie udostępnia tzw. katalogi administracyjne, do których jednak nie uzyskamy dostępu bez podania hasła.

    W kolejnej części opiszę jak w równie prosty sposób ograniczyć dostęp do udostępnionych zasobów.

    Jeżeli powyższy artykuł nie rozwiązał lub rozwiązał częściowo Twój problem, dodaj swój komentarz opisujący, w którym miejscu napotkałeś trudności.
    Mile widziane komentarze z uwagami lub informacjami o rozwiązaniu problemu.
    • pawstrze

      A co zrobić żebym mógł z komputera z Windowsem przeglądać podkatalogi udostępnionego folderu?

    • http://mkilinski.pl kilabdg

      np:

      [raid]
      	comment = dysk serwera
      	writeable = yes
      	valid users = mati
      	create mode = 777
      	path = /mnt/raid
      	directory mode = 777

      po zalogowaniu na usera mati masz prawa takie jak „mati” do katalogów i podkatalogów. Jeśli nie masz praw do jakiegoś podkatalogu / pliku w udostępnionym udziale, musisz spod linuxa dać uprawnienia użytkownikowi „mati”

    • Zoneman

      a co jeśli windows 7 nie widzi mojego dysku??

    • RafciX

      Nie wiem czemu, ale nie można wejść do udostepnionych zasobów, które znajdują się na zamontowanej partycji (za pomocą: http://www.ubuntu-pomoc.org/automatyczne-montowanie-partycji-ntfs/ ustawiłem automatyczne montowanie). Po prostu wiem, że to wina tego, że to jest na zamontowanej partycji (udostępniłem cały dysk, na którym jest zainstalowany Ubuntu) i okazało się, że z poziomu przeglądania zasobów sieciowych nie można wejść do folderu /media/DANE (tam jest zamontowana partycja). Jakby co to normalnie można to zrobić.
      Mnie coś się wydaje, że system nie pozwala sambie na dostęp do tych plików.

    • Soemtron

      Ja do tej pory robiłem prawym na katalogu,który chce udostępnić i opcje współdzielenia.Robiłem udostępnij i wyskakiwał monit,że muszę zainstalować usługę (instalowała się Samba)Po tym wszystkim już na innym komputerze widziałem swój drugi komputer i udostępnione katalogi.Po kliknięciu na dany katalog,wyskakiwał monit o podanie loginu i hasła i już miałem dostęp do danych w udostępnionym katalogu.Nadal używam Ubuntu 10.04 i nie ma problemu,ale Ubuntu 11.10 zwyczajnie mnie nie wpuszcza???Wyskakuje monit o login i hasło i po wklepaniu kicha.Dodam,że na Kubuntu 11.10 jest ok.Wie kto co to za babol?Mam ochotę się przesiąść,bo Oneric zrobił się naprawdę fajny,a Lucid zaczyna trącić myszką…

    • mastedany88@gmail.com

      hej RafciX
      mam ten sam problem już od dawna.
      Jest jakaś solucja może?
      odpisz mi na:
      masterdany88(at)gmail.com

    • eed

      U mnie edycja pliku samby nic nie daje. Mam udostępnione tylko drukarki i nic więcej. Robiłem wszystko po kolei tak jak jest napisane i wszystko nie działa.

    • http://www.facebook.com/profile.php?id=100001621097965 Harrybeckham Bouman

      [global]
      netbios name = Twoja nazwa
      display charset = UTF-8
      interfaces = 127.0.0.1/8 lo 192.168.1.1/24 ethX
      server string = Samba on twój serwer
      unix charset = UTF-8
      workgroup = Grupa Robocza
      browseable = yes
      deadtime = 30
      domain master = yes
      encrypt passwords = true
      enable core files = no
      guest account = root
      guest ok = yes
      local master = yes
      load printers = no
      map to guest = Bad User
      max protocol = SMB2
      min receivefile size = 16384
      null passwords = yes
      obey pam restrictions = yes
      os level = 20
      passdb backend = smbpasswd
      preferred master = yes
      printable = no
      security = user
      smb encrypt = disabled
      smb passwd file = /etc/samba/smbpasswd
      socket options = TCP_NODELAY IPTOS_LOWDELAY
      syslog = 2
      use sendfile = yes
      writeable = yes

      [sda1] # nazwa zasobu
      path = /twoja/katalog/udostępniony
      read only = no
      guest ok = yes
      create mask = 0777
      directory mask = 0777
      browseable = yes

    • qmksmoli

      Opis pobieżny i sprawdza się TYLKO dla katalogu /home/user dla tych co chcą udostępnić zasoby w /media niestety nie, więc solucja.

      Konfiguracja samby:

      [global]
      workgroup = WORKGROUP #nazwa sieci
      netbios name = SAMBA #nazwa komputera lub łotewer
      server string = Samba Server %v #komentarz łotewer
      security = user #tu ważne żeby nie było share tylko user i o tym dalej napiszę
      map to guest = bad user #jak nie wpiszesz hasła w okienku logowania do zasobów będziesz traktowany jako guest
      browseable = yes #reszty proszę poszukać sobie w googlach bo nie chce mi się tłumaczyć
      local master = yes
      domain master = yes

      [C]
      comment = C
      path = /media/C
      create mask = 0777
      directory mask = 0777
      browsable = yes
      writable = yes
      guest ok = yes
      #tutal wyżej mam nadzieje, że każdy wie o co chodzi

      Teraz sprawa najważniejsza.
      Zapisujemy plik. Potem komenda

      sudo smbd restart

      I tutaj kluczowa dla nas rzecz. Dodajemy użytkownika do serwera samby (czyli siebie i najlepiej nazwa i hasła takie jakie mamy w systemie).

      sudo smbpasswd -a user [ENTER]

      Wyskoczy okienko o hasło (2 razy). Wklepujemy hasło dwa razy (najlepiej takie jakie mamy w systemie).
      To tych wszystkich czarach jak będziemy chcieli z klienta wejśc na zasób w /media wyskoczy okienko logowania. Podajemy to co wklepaliśmy po komendzie wyżej.
      TADAM działa.Pozdrawiam.

      • Pjetiasz

        przepraszam za tak banalne pytanie ( z twojego punktu widzenia:)) ale co masz na myśli pisząć: „dodajemy użytkowanika do serwera samby”

        • qmksmoli

          Jednak źle to ująłem z tym „dodawaniem użytkownika”. Komenda smbpasswd jak to wynika z manuala służy do kilku rzeczy, ale jedną z nich jest ustawienie hasła dla samby dla konkretnego użytkownika. Nie wiem czy bez tego w ubuntu jest czyste (czyli nic), ale i tak nie da się zalogować np. z windowsa nic nie wpisując. Na mandrivie pamiętam tego nie trzeba było robić. Tylko skonfigurować sambę i restart. Tutaj trzeba ustawić to hasło.

    • Michał Dybczak

      Co zrobić jeśli windows i tak nie widzi serwera samby? Próbowałem ustawień z różnych artykułów i niestety nic nie działa, nie widać linuxa pod windowsem. Mam wyłączony firewall w linuxie, ale nie w windowsie, ale może to on robi problemy?

      Najbardziej frustrujące jest to, że mimo wielu artykułów na ten temat nic nie działa tak jak jest to opisane, a testowałem to na różnych komputerach i różnych wersjach linuxa, czyli wina prawdopodobnie leży po stronie windowsa, jednak nie znam się na tym na tyle, że to sprawdzić.

      • wrzomar

        Mógłbyś uściślić co znaczy „nie widzi serwera samby”? Próbowałeś połączyć się w kierunku Windows->Samba używając IP?

        • Michał Dybczak

          Udało się w końcu połączyć z windowsem. Problemy wynikały z niezrozumienia zasad działania takiego połączenia i braku jasności w większości artykułów na ten temat. Po prostu myślałem, że windows zobaczy serwer samby tak jak widzi inne windowsy w sieci. Jednak znalazłem sensowne info, które pomogło mi stworzyć skrót po IP do folderu samby i wszystko działa dobrze. Teraz trzeba będzie jeszcze podpiąć drukarkę. W drugą stronę też miałem problemy, bo wpisywałem na linuxie hasło domowej sieci windows (tak jakbym dołączał windowsa do sieci) i siebie jako usera… a okazało się, że trzeba usera windowsa i jego hasło do logowania się do systemu. Nigdzie nie było jasno napisane, że ustawienia grupy domowej nie mają żadnego zastosowania… tylko chodzi o usera drugiego systemu i jego hasło…

          Ten artykuł mi pomógł:

          http://www.howtogeek.com/176471/how-to-share-files-between-windows-and-linux/

          • wrzomar

            Czasem trzeba jeszcze zrestartować smbd i nmbd, żeby działało. Żeby działało po nazwie, a nie po IP trzeba włączyć wsparcie dla WINS i można podać nazwę inną niż widnieje w symbolu zachęty, bo jak jest za długa to i tak ją obetnie. Opcje w smb.conf to wins support = yes (domyślnie jest no) i netbios name = wybrana-nazwa czasami trzeba też zmienić kolejność name resolve order (i zarżnąć czarnego koguta;-) ).

            • Michał Dybczak

              OoooK… Nic z tego nie zrozumiałem ;). No może tyle, że jest możliwość łączenia się po nazwie a nie po IP co ma swoje plusy. Właśnie z powodu zmieniania IP komputera przez router musiałem ustawić stały IP na karcie sieciowej, inaczej połączenie z drukarką (udało się ją dodać i windows drukuje z linuxa po sieci) po IP by nie działało jak tylko IP by się zmieniło. Jedyny minus takiego ustawienia jak na razie zauważyłem to nie do końca prawidłowe działanie widgetu pulpitowego od pogody (nie podaje prognozy na dni następne tylko wyświetla cyferki). Zobaczę czy w sieci domowej połączy mi się z netem.

              Żeby uściślić co zrobiłem: wszedłem do połączeń sieciowych -> edycja połączenia -> zakładka IPv4 i dodałem trasę na konkretne IP (próbowałem je dodać do IPv4, ale internet nie chciał działać, dlatego użyłem trasy, jak na razie IP zostało takie jak chcę, dopiero po paru dniach będę mógł ocenić czy działo to poprawnie – w teorii przy łączeniu z routerem karta powinna wymuszać dane IP a nie zdawać się na automatyczne przydzielanie).

              Co rozumiesz przez wsparcie dla WINS i gdzie mógłbym o tym przeczytać?

              • wrzomar

                Właściwie to nie wiem czy trzeba włączać „wins support” czy tylko wystarczy zmienić kolejność w „name resolve order” tak żeby „bcast” było na pierwszym miejscu (nie wiem co podziałało w moim przypadku, bo zrobiłem jedno i drugie). W domu używam głównie Linuksa i udziały NFS, ale samba też jest, bo jest trochę łatwiejsza do ustawienia od NFS. Netbios name było wspominane w artykule, możesz poeksperymentować. Czasami zabawa z sambą przypomina czarną magię (jak prawie wszystko na styku M$ – pingwin), zwłaszcza jak w sieci są różne wersje Windows. NFS niby jest szybszy od samby, ale nie widać różnicy w przypadku mojego retro-desktopa, jedyną różnicą jest tylko to, że miniaturki działają w NFS, a w samba strach je włączyć ;-) A w manualu do smb.conf napisali, żeby „wins support” nie włączać (chyba, że masz wiele podsieci), a już na pewno nie na więcej niż jednej maszynie. Nmbd może być serwerem lub klientem, zależy to od opcji „wins server”. Poradniki bywają nieaktualne lub niekompletne, ale google powinno sobie poradzić. Zawartość man smb.conf powinna być aktualna i kompletna, ale przez to, że jest tam wszystko – jest przytłaczająca, jeśli nie wie się czego szukać.

                • Michał Dybczak

                  Trochę z innej beczki.
                  Jak wspomniałem połączyłem na windowsie drukarkę po IP i ustawiłem w linuxie stałe IP na karcie sieciowej, żeby ustawienia trzymały. Drukarka działa, ale nie na PDFach… a właśnie te głównie drukuję na tony w pracy… We wszystkich innych programach jest ok, tymczasem w Adobe Reader lub Foxit Reader na Windowsie (wybrano drukarkę po IP) pokazuje postęp drukowania, okienko znika, pojawia się w zasobniku ikona drukarki i… nic się dalej nie dzieje. Po najechaniu myszką na ikonę drukarki pokazuje się komunikat „0 dokumentów oczekuje na Sony (nazwa usera w kompie)”. Czyli coś tak jakby drukowanie się powiodło, tymczasem drukarka ani drgnie. Powtarzam, na innych programach drukowanie działa bez problemu.

                  Skoro drukowanie ogólnie działa, połączenie jest ok, tylko co z tymi PDFami jest nie tak? Nie wiem co z tym począć.

                • wrzomar
                • Michał Dybczak

                  Dzięki. Trochę to skomplikowane i muszę nad tym posiedzieć, ale wygląda obiecująco.

    • Marcin Walczak

      W Ubuntu 15.04 – kliknij PPM na katalog który chcesz udostępnić. Właściwości, Local Network Share, Udostepnienie tego katalogu, zaznacz opcje które cię interesują. Zainstaluje się Samba, A katalog bedzie dostepny w twojwj sieci. Wszystko :)