Jest to dokument z serii HOWTO (Jak To Zrobić). Opisuje on jak używać z Linuxem Session Message Protocol, zwanego też NetBIOS lub LanManager.
Dokument ten jest prowadzony przez Davida Wooda dwood@plugged.net.au. Wszelkie dodatki, modyfikacje lub poprawki mogą być przesłane do mnie, aby je później umieścić w następnej wersji.
Protokół SMB używany jest przez Microsoft Windows 3.11, NT i 95 aby współdzielić zasoby dyskowe i drukarki. Maszyny Unix-owe (w tym także Linux) mogą korzystać z tych zasobów używając narzędzi stworzonych przez Andrew Tridgella.
Są cztery rzeczy, które można zrobić Sambą:
Wszystko to zostało opisane w tym dokumencie.
Disclaimer. Procedury i skrypty albo działały u autora, albo zostały opisane jako działające przez tych, którzy je napisali. Różne konfiguracje mogą nie działać z podanymi tutaj informacjami. Jeśli odkryjesz taką sytuację możesz napisać do autora list z sugestią na ulepszenie tego dokumentu, ale autor nic nie gwarantuje. A czego się spodziewałeś ? W końcu autor jest tyklo konsultantem.
Dokument ten jest próbą opisania jak skonfigurować na Linux-ie podstawowe serwisy SMB związane z plikami i drukarkami. Samba jest bardzo złożonym i kompletnym pakietem. Nie ma sensu, żeby kopiować tutaj wszystko to co jest zawarte w dokumentacji dla tego pakietu.
Dalszych informacji możesz szukać w:
Najświeższe źródła Samby dostępne są pod adresem
ftp.icm.edu.pl w katalogu /pub/samba.
Jeśli instalowałeś dystrybucję Red Hat mogłeś wybrać instalację Samby jako jedną z opcji. Niektóre inne dystrybycje też oferują binaria Samby.
Następujące demony są wymagane do pracy z Sambą. Zwykle znajdują
się one w katalogu /usr/sbin i są uruchamiane w momencie startu
systemu albo przez demon inetd. Przykładowe skrypt
znajdują się w sekcji
Uruchamianie demonów.
smbd (Demon SMB) i nmbd (Świadczy usługi nameservera NetBIOS-u)
Zwykle w systemie instalowane są następujące binaraia w katalogu /usr/bin:
smbclient (Klient dla maszyn Unix-owych), smbprint (skrypt do drukowania na drukarce przyłączonej do hosta SMB), smbprint.sysv (To samo co wcześniej, ale dla systemu UNIX SVR4), smbstatus (Wyświetla bieżące połączenia SMB na lokalnym hoście), smbrun (Główny skrypt do uruchamiania aplikacji na hoście SMB)
Dodatkowo zawarty jest w tym dokumencie skrypt o nazwie "print", który jest pożytecznym dokończeniem skryptu smbprint.
Pakiet Samba jest prosty w instalacji. Ściągnij go z podanego wcześniej miejsca i przeczytaj plik README znajdujący się w dystrybucji. Jest jeszcze plik docs/INSTALL.txt, który podaje krok po kroku co należy zrobić, aby zainstalować Sambę.
Postępując wraz z instalacją, umieść demony w /usr/sbin i binaria w /usr/bin. Zainstaluj strony do podręcznika systemowego "man" w /usr/local/man.
Kiedy będziesz instalował pakiet Samba, będziesz musiał podać
miejsce, gdzie ma się znajdować plik konfiguracyjny smb.conf.
Z reguły jest to katalog /etc, ale możesz go umieścić, gdzie ci
się podoba. Dla dalszych instrukcji założymy, że plik
konfiguracyjny umieściłeś w /etc, plik logujący to
/var/log/samba-log.%m i katalog blokujący to /var/lock/samba.
Zainstaluj plik konfiguracyjny smb.conf. Przejdź do katalogu,
gdzie została skompilowana Samba. Zajrzyj do katalogu
examples/simple i przeczytaj plik README. Skopiuj
znaleziony tam plik smb.conf do /etc. OSTROŻNIE !!!
Jeśli masz dystrybucję Linux-a, która miała Sambę i zainstalowałeś
ją to pewnie masz już plik smb.conf w katalogu /etc i lepiej
zacznij od tego pliku.
Jeśli nie chcesz umieszczać pliku konfiguracyjnego w /etc, to umieść go tam, gdzie chcesz i zrób symboliczne dołączenie:
ln -s /gdzie/jest/smb.conf /etc/smb.conf
Dwoma demonami SMB są: /usr/sbin/smbd i /usr/sbin/nmbd.
Możesz je uruchomić przez demona inetd lub jako osobne
procesy. Jeśli konfigurujesz na stałe serwer plikowy, to powinny
one być uruchamiane przez inetd po to, żeby je ponownie
uruchomić jeśli z jakiegoś powodu przestaną działać. Jeśli chcesz
korzystać z Samby tylko czasami, to możesz je uruchomić z któregoś
ze skryptów startowych w katalogu /etc/rc.d albo po
prostu od ręki wtedy kiedy je potrzebujesz.
Aby uruchomić demony przez inetd umieść następujące linie w
pliku /etc/inetd.conf:
Serwis NetBIOS dla Samby
# netbios-ssn
stream tcp nowait root /usr/sbin/smbd smbd netbios-ns dgram udp wait
root /usr/sbin/nmbd nmbd
Następnie wyślij sygnał HUP do procesu nr 1:
kill -HUP 1
Dla użytkowników dystrybucji Red Hat.
Aby uruchomić te demony ze skryptów startowych, umieść następujący
skrypt w katalogu /etc/rc.d/init.d/smb i dołącz je
symbolicznie do plików podanych w komentarzu:
#!bin/sh
#
# /etc/rc.d/init.d/smb - startuje i zatrzymuje serwis SMB
#
# Następujące pliki powinny być symbolicznymi dołączeniami do
# tego pliku:
# /etc/rc.d/rc1.d/K35smb (Zatrzymuje serwis SMB podczas
# zamknięcia systemu.
# /etc/rc.d/rc3.d/S91smb (Startuje serwis SMB w trybie
# wieloużytkownikowym
# /etc/rc.d/rc6.d/K35smb (zatrzymuje serwis SMB podczas resetu)
#
# Biblioteka funkcji
etc/rc.d/init.d/functions
# Konfiguracja sieci
etc/sysconfig/network
# Sprawdź czy jesteśmy w sieci
[ ${NETWORKING} = "no" ] && exit 0
# Zobacz jak zostaliśmy wywołani
case "$1" in
start) echo -n "Starting SMB services: "
daemon smbd -D
daemon nmbd -D
echo touch /var/lock/subsys/smb
;;
stop) echo -n "Shutting down SMB services: "
killproc smbd
killproc nmbd
rm -f /var/lock/subsys/smb echo ""
;;
*) echo "Usage: smb {start|stop}" exit 1
esac
Od tłumacza:
Jeśli używasz dystrybucji Slackware.
Umieść poniższy fragment w skrypcie startowym /etc/rc.d/rc.local:
# czy jesteśmy w sieci
[ ${NETWORKING} = "no" ] && exit 0
# Uruchmon demony Samby
/usr/sbin/smbd -D
/usr/sbin/nmbd -D
Konfiguracja Samby na Unix-ie jest kontrolowana jednym plikiem:
/etc/smb.conf. W pliku tym umieszczasz zasoby jakie
chcesz udostępnić dla świata i jakie restrykcje chcesz wprowadzić.
Ponieważ ta sekcja opisuje udostępnianie dysków i drukarek Linux-owych Windowsom, plik smb.conf będzie najprostszym z możliwych.
Nie martw się o szczegóły. Późniejsze sekcje wprowadzą ogólny koncept.
Każda sekcja pliku zaczyna się od nazwy jak np.: [global], [homes], [printers] itp.
Sekcja [global] definiuje kilka ogólnych zmiennych, które będą się odnosić do wszystkich udostępnianych zasobów.
Sekcja [homes] pozwala użytkownikom na dostęp do ich (i tyklo ich) katalogów domowych na lokalnej maszynie Linux-owej. Jeśli jakiś użytkownik Windows będzie chciał skorzystać z udostępnianych zasobów, to zostanie podłączony do swojego katalogu domowego. Zauważ, że aby to zrobić użytkownik musi mieć swoje konto na maszynie Linux-owej.
Poniższy przykładowy plik smb.conf pozwala użytkownikom na dostęp do swoich katalogów domowych i na zapis do katalogu tymczasowego. Aby użytkownik Windows zobaczył udostępniane zasoby, Linux musi być w tej samej sieci lokalnej. Użytkownik Windows po prostu dołącza dysk sieciowy z Menedżera Plików lub Eksploratora Windows.
W następnych sekcjach będą dodawane kolejne linie do tego pliku, aby umożliwić dostęp do większej ilości zasobów.
etc/smb.conf
;
; Po wprowadzeniu zmian do tego pliku zrestartuj demony Samby
; kill -9 `pidof smbd`; kill -9 `pidof nmbd`
; /usr/sbin/smbd; /usr/sbin/nmbd
[global] Umieść to w pliku jeśli chcesz konto anonimowe guest account = nobody
log file = /var/log/samba-log.%m lock directory = /var/lock/samba share
modes = yes
[homes] comment = Katalogi Domowe browseable = no read only = no create
mode = 0750
[tmp] comment = Miejsce na pliki tymczasowe path = /tmp read only = no
public = yes
Jak widać na powyższym przykładzie udostępnianie dysków Linux-owych użytkownikom Windows jest proste. Dostęp do zasobów udostępnianych poprzez Sambę można w bardzo dużym stopniu kontrolować.
Aby udostępnić wszystkim jakieś zasoby, dodaj poniższe linie do smb.conf:
[public]
comment = Public Stuff path = /home/public public = yes writable = yes
printable = yes
Aby umożliwić zapis do tego katalogu tylko dla członków grupy staff, zmodyfikuj te linie w następujący sposób:
[public]
comment = Public Stuff path = /home/public public = yes writable = yes
printable = no write list = @staff
Więcej informacji na temat różnych sposobów udostępniania zasobów znajdziesz w dokumentacji do Samby.
Wraz z dystrybucją Samby otrzymujemy klienta dla Unix-ów. Jego interfejs poleceń jest podobny do ftp. Możesz go używać, aby przenosić pliki między Windowsowym "serwerem" a klientem Linux-owym.
Aby zobaczyć jakie zasoby sa udostępnione na danym hoście napisz:
/usr/sbin/smbclient -L host
gdzie host jest nazwą maszyny, której zasoby chcesz zobaczyć. Polecenie to zwróci listę nazw serwisów - to znaczy nazw dysków lub drukarek, które może udostępnić. Serwer Samby będzie cię pytał o hasło, o ile nie ma skonfigurowanego bezpiecznego dostępu.
Np.
smbclient -L zimmermann
Polecenie to powinno wyświetlić coś na kształt:
Server time is Sat Aug 10 15:58:27 1996 Timezone is UTC+10.0
Password: Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51]
Server=[ZIMMERMAN] User=[] Workgroup=[WORKGROUP] Domain=[]
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin public Disk Public C$ Disk
Default share IPC$ IPC Remote IPC OReilly Printer OReilly print$
Disk Printer Drivers
This machine has a browse list:
Server Comment
--------- -------
HOPPER Samba 1.9.15p8 KERNIGAN Samba 1.9.15p8 LOVELACE
Samba 1.9.15p8 RITCHIE Samba 1.9.15p8 ZIMMERMAN
Browse list pokazuje inne serwery SMB udostępniające zasoby w sieci.
Aby użyć klienta napisz:
/usr/sbin/smbclient serwis <hasło>
gdzie serwis jest nazwą maszyny i zasobu. Na przykład jeśli próbujesz dostać się do katalogu, który jest udostępniany jako public na maszynie o nazwie zimmermann, serwisem byłoby: \\zimmerman\public. Chociaż z powodu powłoki w Linux-ie będziesz musiał oznaczyć znaki \ specjalnie i polecenie ostatecznie wygląda tak:
usr/sbin/smbclient \\\\zimmerman\\public hasło
gdzie hasło jest łańcuchem znaków będącym twoim hasłem.
Pojawi się wtedy znak zachęty klienta Samby:
Server time is Sat Aug 10 15:58:44 1996 Timezone is UTC+10.0
Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager
3.51] smb: \>
Napisz 'h', aby uzyskać pomoc:
smb: \> h ls dir lcd cd pwd get mget put mput rename more mask del rm
mkdir md rmdir rd prompt recurse translate lowercase print printmode
queue cancel stat quit q exit newer archive tar blocksize tarmode
setmode help ? ! smb: \>
Jeśli umiesz używać ftp, to nie powinieneś potrzebować czytać podręcznika systemowego na temat smbclient.
Aby udostepnić drukarkę Linux-ową Windowsom musisz się upewnić, że drukarka działa dobrze pod Linux-em. Jeśli możesz drukować spod Linux-a to ustawienie serwera SMB dla drukarki jest bardzo proste.
Przeczytaj Priniting-HOWTO na temat ustawienia drukarki pod Linux-em.
Ponieważ autor używa drukarki połączonej z Windows NT, sekcja ta nie powinna być brana za definicję, ale bardziej jako sugestia. Jeśli ktokolwiek ma ochotę się podzielić szczegółami na temat innych konfiguracji proszę o kontakt, aby ta sekcja mogła zostać skończona: dwood@plugged.net.au.
Dodaj konfigurację na temat drukowania do smb.conf:
[global]
printing = bsd printcap name = /etc/printcap load printers = yes
log file = /var/log/samba-log.%m lock directory = /var/lock/samba
[printers] comment = Wszystkie drukarki security = server path = /var/spool/lpd/lp
browseable = no printable = yes public = yes writable = no
create mode = 0700
[ljet] security = server path = /var/spool/lpd/lp printer name = lp
writable = yes public = yes printable = yes
print command = lpr -r -h -P %p %s
Upewnij się, że ścieżka do drukarki (w tym wypadku w sekcji ]ljet[) /defs" na "chmod 600 /etc/login.defs" plik ten nie musi być wykonywalny,
@@endformula>