Samba
Z wiki linux-user
(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 |