Samba

Z wiki linux-user
Skocz do: nawigacji, wyszukiwania
(Utworzył nową stronę „Category:Serwer == Samba == '''Samba''' jest darmowym serwerem plików oraz drukarek, dostępna praktycznie dla każdego systemu. Dostępna jest na licencji [[G...”)
 
Linia 21: Linia 21:
 
*'''NMBD''' demon usługi nazw NetBIOS, w poprawnie skonfigurowanym serwerze powinien działać przynajmniej jeden proces nmbd. Jeżeli w serwerze został skonfigurowany parametr pozwalający sambie pracować jako serwer WINS (wins serwer = yes), zostanie utworzona kolejna kopia demona nmbd. Ponadto nmbd obsługuje poszukiwanie nazw NetBIOS oraz żądania wins.
 
*'''NMBD''' demon usługi nazw NetBIOS, w poprawnie skonfigurowanym serwerze powinien działać przynajmniej jeden proces nmbd. Jeżeli w serwerze został skonfigurowany parametr pozwalający sambie pracować jako serwer WINS (wins serwer = yes), zostanie utworzona kolejna kopia demona nmbd. Ponadto nmbd obsługuje poszukiwanie nazw NetBIOS oraz żądania wins.
 
*'''WINBIND''' samba za pomocą Winbind pobiera dane na temat użytkowników i grup z Windows oraz odwzorowuje je na lokalne numery ID. Winbind kontroluje usługę winbindd i do jego włączenia nie jest potrzebny działający demon smbd.
 
*'''WINBIND''' samba za pomocą Winbind pobiera dane na temat użytkowników i grup z Windows oraz odwzorowuje je na lokalne numery ID. Winbind kontroluje usługę winbindd i do jego włączenia nie jest potrzebny działający demon smbd.
 +
 +
== Instalacja ==
 +
 +
Aby zainstalować '''serwer samba''' na linuxe (artykuł pisany jest na centos 5.5 i386), możemy użyć kilku metod takich jak zainstalowanie odpowiednich pakietów z pełnej płyty instalacyjnej dystrybucji, możemy ściągnąć z internetu paczki samby i zainstalować je ręcznie lub możemy skorzystać z naszego repo. W niniejszym  artykule użyjemy właśnie tej ostatniej metody.
 +
 +
Aby zainstalować serwer samba wydajemy następujące polecenie
 +
 +
yum install samba samba-common samba-client
 +
 +
lub
 +
 +
yum groupinstall „Windows File Server”
 +
 +
 +
 +
Po tych operacjach jeżeli nie było żadnych problemów powinniśmy mieć wszystko co potrzebujemy aby zacząć konfiguracje naszego serwera Uśmiech Zarządzanie usługami odbywa się w taki sam sposób jak w przypadku serwera stron [[Apache|www]], [[Vsftpd|ftp]] czy innych tego typu usług.
 +
 +
/etc/init.d/smb (start/stop/restart/reload/status/condrestart)
 +
 +
*'''start''' start serwera
 +
*'''restart''' włączenie i wyłączenie serwera, jeśli serwer był wyłączony zostanie on włączony
 +
*'''stop''' wyłączenie serwera
 +
*'''status''' sprawdzanie statusu działania serwera
 +
*'''reload''' przeładowanie konfiguracji serwera bez konieczności jego wyłączania
 +
*'''condrestart''' restart usługi zrobi się tylko wtedy gdy serwer cały czas działa (jest uruchomiony)
 +
 +
 +
== Przeglądanie zasobów ==
 +
 +
Bezpośrednio z terminala mamy możliwość przeglądania zasobów naszego serwera samby, do tego celu używamy takich komend jak
 +
 +
smbtree
 +
findsmb
 +
 +
'''findsmb''' powinien dać nam wynik podobny do poniższego
 +
 +
$ findsmb
 +
  *=DMB
 +
  +=LMB
 +
IP ADDR        NETBIOS NAME    WORKGROUP/OS/VERSION
 +
---------------------------------------------------------------------
 +
192.168.0.1    SERWERSAMBA  +[SERWERSAMBA] [Unix] [Samba 3.5.6]
 +
 +
oraz '''smbtree'''
 +
 +
$ smbtree
 +
Enter root's password:
 +
SERWERSAMBA
 +
  \\SERWERSAMBA    Samba 3.5.6
 +
  \\SERWERSAMBA\IPC$          IPC Service (Samba 3.5.6)
 +
  \\SERWERSAMBA\programy      dysk z programami
 +
  \\SERWERSAMBA\zdjecia        dysk ze zdjeciami
 +
  \\SERWERSAMBA\muzyka        Katalog dla lokalnych komputerow z muzyka
 +
  \\SERWERSAMBA\dokumenty      katalog z dokumentami
 +
  \\SERWERSAMBA\all            Katalog dla lokalnych komputerow
 +
 +
W przypadku polecenia '''smbtree''' zostajemy zmuszeni do podania hasła użytkownika [[root]].
 +
 +
Mamy możliwość połączenia się z zasobami serwera samby za pomocą polecenia '''smblient'''
 +
 +
smbclient nazwausługi [hasło] [-s smb.conf] [-B adres IP] [-O opcje gniazd] [-R porządek sprawdzania nazw] [-M nazwa NetBIOS] [-i zasięg] [-N] [-n nazwa NetBIOS] [-d poziom debugowania]  [-P] [-p port] [-l podstawa nazwy logów] [-h] [-I adres IP] [-E] [-U nazwa użytkownika] [-L nazwa NetBIOS] [-t kod terminala] [-m maksymalny poziom protokołu] [-W grupa robocza] [-TIXFqgbNan] [-D katalog] [-c lista komend]
 +
 +
Sposób użycia
 +
 +
smbclient //localhost/slawek -U slawek
 +
 +
Opis użytych poleceń
 +
 +
*//localhost adres serwera samba można zarówno podać adres ip jak i nazwe hosta
 +
*/slawek zasób dostępny na danym serwerze
 +
*-U user użytkownik mający prawo do przeglądania wyżej wymienionego zasobu. Jeżeli nie podamy tej opcji będziemy się logować na tego użytkownika, który wywołał polecenie smbclient
 +
 +
Po udanym wprowadzeniu komendy powinniśmy zostać zapytani o hasło użytkownika którego login podaliśmy za opcją ''-U''. Jeżeli wszystko poszło dobrze i udało nam się poprawnie zalogować na serwer zobaczymy znak zachęty podobny do tego ''smb:\>''.
 +
 +
 +
== Montowanie zasobów w systemie ==
 +
 +
Jak wszystko inne tak i zasoby samby możemy bez wielkich przeszkód zamontować w naszym systemie np za pomocą polecenia mount wydając polecenie
 +
 +
mount -t cifs -o username=slawek //192.168.0.1/slawek /mnt/samba/
 +
 +
W powyższym polecenie zamontowaliśmy zasób znajdujący się na serwerze z adresem ip 192.168.0.1 o ścieżce slawek w lokalnym katalogu /mnt/samba/, logujemy się na użytkownika slawek (za komendą -o), typem systemu plików jaki użyliśmy to '''cifs'''.
 +
 +
Mamy możliwość również bezpośredniego montowania zasobu samby przy uruchamianiu naszego komputera. Do tego celu użyjemy pliku fstab
 +
 +
Wchodzimy do pliku ''/etc/fstab'' za pomocą naszego ulubionego edytora tekstu i dopisujemy poniższe opcje
 +
 +
//192.168.0.1/slawek /mnt/samba cifs user,uid=500,rw,suid,username=slawek, password=tajne_hasło 0 0credentials=/root/tajne.txt
 +
 +
W powyższym przykładzie przy uruchamianiu systemu lub wydaniu polecenia mount -a zostanie zamontowany zasób znajdujący się na serwerze z ip 192.168.0.1, zasób slawek na użytkownika slawek o haśle tajne_hasło do katalogu ''/mnt/samba/''. Jak widać w powyższej konfiguracji musimy podać nasze tajne hasło jawnym tekstem co nie jest zbyt bezpiecznym rozwiązaniem. W tym celu możemy użyć opcji credentials, która pozwoli zdefiniować nam hasła w innym pliku, którego wszyscy nie będą mogli czytać. Zamiast ''username=slawek'', ''passwd=tajne_hasło'' wpisujemy
 +
 +
credentials=/root/hasla_samby.txt
 +
 +
gdzie w pliku ''/root/hasla_samby.txt'' definiujemy login i hasło
 +
 +
username=slawek
 +
password=tajne_hasło
 +
 +
== Zarządzanie użytkownikami ==
 +
 +
Do zarządzania użytkownikami w sambie mamy kilka przydanych poleceń, które zostały zaprezentowane poniżej. Jednak należy pamiętać,że jeśli chcemy dodać użytkownika do samby to konto danego usera musi istnieć w systemie.
 +
 +
*'''smbpasswd -a user''' dodajemy użytkownika do samby (pamiętaj o adduser user)
 +
*'''smbpasswd -d user''' blokada konta podanego użytkownika
 +
*'''smbpasswd -e user''' odblokowanie konta, które zostało zablokowane poleceniem z opcją -d
 +
*'''smbpasswd -x user''' usunięcie użytkownika z samby (dostępne tylko dla usera root)
 +
*'''smbpasswd -h''' wyświetlenie pomocy dla polecenia smbpasswd
 +
*'''smbpasswd -L''' użycie tzw "local mode"
 +
 +
==
 +
Konfiguracja serwera ==
 +
 +
Główny plik konfiguracyjny jest umieszczony w ścieżce ''/etc/samba/'' i nazywa się ''smb.conf''. Najważniejsze opcje samby
 +
 +
*'''browsable = yes/no''' opcja definiuje czy zasób ma być widoczny na liście wszystkich zasobów
 +
*'''writable = yes/no''' opcja określa czy można pisać do danego zasobu czy też nie
 +
*'''write list = user''', user/@grupa parapetr zawiera listę użytkowników lub @grupę (@ określa że definiowana jest grupa) posiadających uprawnienia do czytania i pisania usługi.Jeżeli użytkownik znajduje się na tej liście, to otrzymuje prawa do zapisu bez względu na opcję read-only
 +
*'''force user/group = user/@grupa''' opcja przydatna jeśli chcemy wymusić podłączanie się do zasobu jako podany użytkownik/grupa
 +
*'''admin user = user''', user... lista użytkowników z z prawami administracyjnymi w danym udziale
 +
*'''hosts allow = 192.168.0.0/255.255.255.0''' polecenie umożliwiające zdefiniować, które hosty lub całe sieci będą miały dostęp do zasobu, w typ przypadku została zdefiniowana cała sieć
 +
*'''host deny = 192.168.0.10''' zablokowanie możliwości łączenia się z serwerem z określonego adresu ip lub całej sieci
 +
*'''guest ok = yes/no''' opcja pozwala kontrolować dostęp dla gości
 +
*'''guest only = yes/no''' dany zasób będą mogli oglądać wszyscy (wstęp wolny)
 +
*'''max connections = x''' za pomocą tej opcji możemy zdefiniować maksymalną liczbę połączeń do zasobu
 +
*'''add user script = /sciezka/do/skryptu''' pełna ścieżka do skryptu użytkownika, który może być wykonany z prawami użytkownika root
 +
*'''case sensitive = yes/no''' parametr ten może kontrolować czy nazwy plików mają uwzględniać wielkość znaków czy nie. Opcja przydatna gdy w sieci są klienci DOS. Jeśli opcja ustawiona jest na no to samba próbuje szukać i dopasowywać nazwy plików
 +
*'''comment = komentarz''' w tym polu możemy zdefiniować komentarz dla danego udziału. Pole jest widoczne za nazwami udziału w otoczeniu sieciowym systemu windows
 +
*'''deadtime = 10''' opcja ustawia czas w minutach nieaktywności ze strony użytkownika po którym zostanie zerwane połączenie przez serwer
 +
*'''hide dot files = yes/no''' parametr określa czy pliki zaczynające się od kropki mają być przedstawione jako ukryte
 +
*'''interfaces = eth0 192.168.0.1/24''' parametr pozwala określić interfejsy z których ma korzystać serwer samba
 +
*'''local master = yes/no''' parametr kontroluje czy dany serwer ma być głównym serwerem plików w sieci
 +
*'''max disk size = 100''' opcja określa granice  widocznego dostępnego miejsca na dysku. Wartość podaje się w MB.
 +
*'''max open files = 1000''' parametr określa maksymalną ilość otwartych plików przez jeden proces smbd
 +
*'''max xmit = 1000''' parametr określa maksymalny rozmiar pakietu, jaki może być negocjowany przez sambę. Domyślną wartością jest 65535
 +
*'''oplocks = True/False''' parametr określa czy demon smbd będzie wysyłał prawa oplock (oportunistyczne blokady) do plików otwierania w danym udziale. Opcja oplocks zwiększa wydajność serwera o około 30 %
 +
*'''valid users = user''', user, @grupa lista użytkowników/grup uprawnionych do przeglądania danego zasobu, jeśli pusta to każdy ma dostęp do danego zasobu
 +
*'''workgroup = MOJAGRUPA''' opcja wskazuje na nazwe domyślnej grupy roboczej
 +
*'''wins server = 192.168.0.2''' parametr określa adres ip lub nazwe DNS serwera WINS, dla którego może się zarejestrować demon nmbd. Jeśli masz serwer wins w sieci lokalnej powinieneś podać jego adres IP
 +
 +
== Poziomy bezpieczeństwa ==
 +
 +
W konfiguracji serwera '''samba''' mamy do dyspozycji dwa poziomy bezpieczeństwa.
 +
 +
Na poziomie zasobów, gdzie użytkownik musi podać hasło dopiero kiedy chce otrzymać dostęp do zasobów
 +
 +
security = share
 +
 +
Na poziomie użytkownika, user proszony jest o podanie hasła już przy próbie zobaczenia listy dostępnych zasobów, opcja domyślna
 +
 +
security = user
 +
 +
 +
== Przykładowa konfiguracja ==
 +
 +
 +
Poniżej przedstawiam wpełni działającą przykładową konfiguracje serwera '''samba'''. Oczywiście jeżeli chcesz ją wykorzystać u siebie na serwerze musisz zmienić i dopasować niektóre z użytych poniżej opcji. Z konfiga usunięte zostały zbędne komentarze.
 +
 +
[global]
 +
        workgroup = serwersamba
 +
        interfaces = 127.0.0.1 eth0 192.168.0.0
 +
        netbios name = serwersamba
 +
        bind interfaces only = true
 +
#      printing = cups
 +
#      printcap name = cups
 +
#      load printers = yes
 +
[homes]
 +
        # ta sekcja mapuje uniksowy katalog $HOME użytkownikowi
 +
comment = Twoj wlasny katalog
 +
# przykładowo, prawa na katalogach domowych użytkownika home
 +
# powinny wyglądać ak:
 +
# $>ls -l /home
 +
# drwx------  3 piotrek  piotrek      512 22 Sty  2000 piotrek
 +
# prawa do plików katalogów dla właściciela
 +
        create mode = 0700
 +
        directory mode = 0700
 +
        public = no
 +
        writable = yes
 +
  # ścieżka do zasobu (czyli $HOME z /etc/passwd)
 +
        path = /home/%u
 +
        browseable = no
 +
# zezwalamy na agresywne buforowanie plikórzez Windows co
 +
# daje znaczące zwięlszenie szybkości Samby.
 +
# Bezsensownym jest stosowanie tego na zasobach bazodanowych itp.
 +
# "oplock" = "opportunistic lock"
 +
        oplocks = True
 +
        level2 oplocks = True
 +
# przykładowo zabraniamy oplock'ów na  plikach *.dbf i *.DBF
 +
# veto oplock files = /*.DBF/*.dbf/
 +
[all]
 +
        path = /home/samba/all
 +
        volume = all
 +
        comment = Katalog dla lokalnych komputerow
 +
        browseable = yes
 +
        writable = yes
 +
#path = /home/samba/all
 +
#volume = all
 +
#comment = Katalog dla lokalnych komputerow
 +
#browseable = yes
 +
#writable = yes
 +
# prawa muszą być także dla grupy, bowiem nikt z członków grupy
 +
# nie może nic zrobić z  plikami innego członka grupy
 +
#create mode = 0770
 +
#directory mode = 0770
 +
#write list = @all
 +
#oplocks = True
 +
#level2 oplocks = True
 +
# dajemy dostęp do niego tylko z części sieci
 +
        hosts allow = 192.168.0.0/255.255.255.0
 +
#comment = DYSK WSPOLNY
 +
[dokumenty]
 +
        path = /home/samba/dokumenty
 +
        volume = dokumenty
 +
        comment = katalog z dokumentami
 +
        browsable = yes
 +
        writable = yes
 +
[muzyka]
 +
        path = /home/samba/muzyka
 +
        volume = muzyka
 +
        comment = Katalog dla lokalnych komputerow z muzyka
 +
        browseable = yes
 +
        writable = yes
 +
#create mode = 0770
 +
#directory mode = 0770
 +
#write list = @all
 +
#oplocks = True
 +
#level2 oplocks = True
 +
[zdjecia]
 +
        path = /home/samba/zdjecia
 +
        volume = zdjecia
 +
        comment = Katalog dla lokalnych komputerow ze zdjeciami
 +
        browseable = yes
 +
        writable = yes
 +
#write list = @all
 +
#oplocks = True
 +
#level2 oplocks = True
 +
[programy]
 +
        path = /home/samba/programy
 +
        volume = programy
 +
        comment = Katalog dla lokalnych komputerow z roznymi  programami
 +
        browseable = yes
 +
      writable = yes
 +
      #write list = @all
 +
      #oplocks = True
 +
      #level2 oplocks = True
 +
      comment = dysk z programami

Wersja z 14:29, 17 kwi 2012

Osobiste
Przestrzenie nazw

Warianty
Działania
Nawigacja
Narzędzia


Sponsor serwisu

Firma informatyczna ITProjek Bydgoszcz usługi informacztyczne, serwery, linux, windows, strony www, hosting, sieci komputerowe, system archiwizacji danych