SAMBA
IBM i SYTEC – NetBIOS (Network Basic Input Output System) - interfejs między programami i hardware sieci Microsoft dołączył w DOS interfejs używający NetBIOS umożliwiający udostępnianie dysku przez sieć Protokół współdzielenia dysku – SMB(Server Message Block ), później CIFS (Common Internet File System) API – (Application Programmers Interface) – powstało wiele aplikacji NetBUI (NetBIOS Enhanced User Interface), IBM – emulacja NetBIOS LAN w oparciu o TokenRing, ethernet, DECnet, IPX/SPX, ICP/IP
NetBIOS używa 16 znakowych nazw, zamienianych na adresy mechanizmami broadcast, problem z przekroczeniem segmentu sieci RFC1001 and RFC1002 zdefiniowały sposób mapowania nazw NetBIOS na adresy IP Microsoft dodał mechanizmy rozgłaszania usług (browsing) i centralną autentyfikację i autoryzację (Windows NT Domain Control)
Andrew Tridgell potrzebował użyć dysku UNIX na PC z DOS Andrew Tridgell potrzebował użyć dysku UNIX na PC z DOS. Posiadał NFS dla DOS, ale aplikacja używała NetBIOS Napisał sniffer, podejrzał protokół SMB i napisał własną aplikację dla UNIX emulującą serwer plików DOS Wiele kolejnych wersji z błędami, odłożył projekt na półkę Po dwu latach postanowił podłączyć komputer żony do maszyny UNIX – program działał Protokół SMB został opublikowany Nazwa smb była zastrzeżona, metodą wyszukania w słowniku nazw zawierających litery S M B wybrał nazwę SAMBA Szybki rozwój na zasadach Open Source
Samba to: Serwer plików i wydruków Autoryzacja i autentyfikacja Serwer nazw NetBIOS Browser
Domena Windows NT – Samba 2. xx Domena Windows NT – Samba 2.xx. Centralna autoryzacja, Domain Controller Active Directory (Windows 2000) – Samba 3.xx. CIFS bez NetBIOS, serwer nazw oparty o DNS, Dynamic DNS, Kerberos, Active Directory, hierarchia domen
Instalacja – rpm: samba-common – wspólne pliki samba – serwer samba-client – klient samby Dokumentacja – man i /usr/share/doc/sambaxxx
smbd – serwer plików i drukarek, konfiguracja w /etc/samba/smb smbd – serwer plików i drukarek, konfiguracja w /etc/samba/smb.conf, TCP, port 139 nmbd – serwer nazw NetBios i browser testparm i testprns – programy do sprawdzania poprawności smb.conf. Testparm sprawdza poprawność smb.conf, testprns sprawdza w /etc/printcap istnienie drukarki. smbclient – prosty klient dla Unix, podłączenie dysku, transfer plików, podłączenie drukarki nmblookup – klent WINS SWAT - (Samba Web Administration Tool) graficzny interfejs do konfiguracji winbindd – daemon, autentyfikacja username/password w serwerze NT, dla nsswitch (Name Service Switch)
workgroup = projekt WSJ hosts allow = 172.24.3. 192.168.0. 127. Konfiguracja: smb.conf 3 sekcje, [global], [printers] i [home] workgroup = projekt WSJ hosts allow = 172.24.3. 192.168.0. 127. security = user (model workgroup. Inne - share,server,domain,ads) password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name] password level = 8 (Ile ważnych znaków w haśle) username level = 8 encrypt passwords = yes (czy negocjować szyfrowane haslo – W98 i WNT SP3 używają tylko szyfrowanego)
security = user trzeba się zalogować do serwera podając poprawnego użytkownika i hasło. Z użytkownika guest można skorzystać, ale wcześniej trzeba się zalogować, chyba, że wymusimy przez map to guest security = share nie jest wymagane zalogowanie do serwera, autentyfikacja jest wykonywana kiedy chcemy skorzystać z udziału (share). Można skorzystać z udziału anonimowo (guest) security = server para username/password przekazywana jest do innego serwera Samba/NT. Jeśli to się nie uda, przechodzi do security = user security = domain maszyna musi być dołączona do domeny, para username/password jest przekazywana do PDC/BDC security = ads maszyna misi być dołączona do domeny, mieć skonfigurowany i uruchomiony kerberos. Nie jest kontrolerem domeny.
smb passwd file = /etc/samba/smbpasswd unix password sync = Yes passwd program = /usr/bin/passwd %u passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*aut hentication*tokens*updated*successfully*
username map = /etc/samba/smbusers (mapowanie nazw użytkowników samby i unix) interfaces = 192.168.12.2/24 192.168.13.2/24 (jeśli więcej niż jeden interfejs sieciowy)
; local master = no (w lokalnej sieci) Samba może być master browserem w sieci: ; local master = no (w lokalnej sieci) ; os level = 33 (priorytet w elekcji master browsera) ; domain master = yes (czy ma być Domain Master Browser, obsługiwać dane z różnych podsieci) ; preferred master = yes (czy przy starcie wymuszać elekcję) ;wins support = yes (czy nmbd ma być serwerem wins) ;wins server = w.x.y.z (nmbd ma być klientem wins)
writable = yes [homes] comment = Home Directories browseable = no (niewidoczne w otoczeniu sieciowym) writable = yes valid users = %S create mode = 0664 directory mode = 0775 map to guest = bad user
create mask = 0644 force create mode = 0644 directory mask = 0755 force directory mode = 0755 create (directory) mask – bitowe AND z prawami z dos, potem bitowe OR z force create (directory) mode
SUID/SGID chmod 4664 test SUID chmod 2664 test SGID Dla plików wykonywalnych – setUID (setGID) pliku dla uruchomionego procesu Dla kartotek – ustaw dla nowego pliku właściciela/grupę kartoteki chmod 4664 test SUID chmod 2664 test SGID chmod ug+s test SGID+SUID
[WWSJ] comment = Wspolne zbiory projektu WSJ path = /home/wsj browseable = yes public = no (synonim guest ok) writable = yes write list = ania kasia tomek valid users = ania kasia tomek marcin create mask = 0777 directory mask = 0777
Samba 3. x trzyma dane użytkowników w LDAP,MySQL, NIS Samba 3.x trzyma dane użytkowników w LDAP,MySQL, NIS. NIS+ lub tdbsam, starsze w /etc/samba/smbpasswd: Kolejne pola oddzielone znakiem ':' Nazwa użytkownika UID LANMAN hash NT hash Flagi konta Data ostatniej zmiany
nobody = guest pcguest smbguest Program do zarządzania użytkownikami – smbpasswd -a - dodaj użytkownika -x - usuń użytkownika -d - zablokuj (-e – odblokuj użytkownika) -m - dodaj konto maszyny Bez opcji – zmienia hasło użytkownika Użytkownicy w smbpasswd muszą mieć swoich odpowiedników w systemie unix. Mapowanie w zbiorze /etc/samba/smbusers, np: nobody = guest pcguest smbguest
pdbedit – zarządzanie bazą użytkowników Modularna konstrukcja, obsługuje smbpasswd, ldap, nis+ and tdb L – wyświetl użytkowników v- wyświetl więcej informacji a – dodaj użytkownika x – usuń użytkownika
Instalacja 1 Niewielka grupa robocza Folder na wspólne pliki, dostępne dla wszystkich tylko do odczytu Drukarki podłączone i używane lokalnie
root# chmod 755 /home/projekty 192.168.1.1 server Zainstalować Linux , samba, samba-common /etc/samba/smb.conf: [global] workgroup = PROJEKTY security = SHARE [Projekty] path = /home/projekty read only = Yes guest ok = Yes Utworzyć kartotekę: mkdir /home/projekty root# chmod 755 /home/projekty /etc/hosts: 192.168.1.1 server Uruchomić sambę: /etc/rc.d/init.d/smb restart (/etc/rc.d/rcX.d!) W Windows skonfigurować IP, ustawić grupę roboczą PROJEKTY. Sprawdzić w otoczeniu sieciowym czy widać serwer i udział
smbclient -L localhost -U% Sharename Type Comment Sprawdzenie: smbclient -L localhost -U% Sharename Type Comment --------- ---- ------- Projekty Disk IPC$ IPC IPC Service (Samba 3.0.20) ADMIN$ IPC IPC Service (Samba 3.0.20) Server Comment --------- ------- SERVER Samba 3.0.20 Workgroup Master --------- -------- PROJEKTY SERVER -U% jako username guest z pustym hasłem smbclient -L server -Uroot%password Z podaniem użytkownika i hasła
Instalacja 2 Niewielka grupa robocza Komputery stacjonarne Kilka udziałów dyskowych ze wspólnymi plikami Wspólne drukarki sieciowe
show add printer wizard = No wins support = yes /etc/samba/smb.conf: [global] workgroup = PROJEKTY printing = CUPS printcap name = CUPS map to guest = Bad User show add printer wizard = No wins support = yes Brak security, domyślnie user, ale wszystkich mapujemy do guest przy logowaniu i projektanci:biuro przy operacjach dyskowych [PLIKICAD] comment = Rysunki CAD path = /home/cad read only = No force user = projektanci force group = biuro guest ok = Yes nt acl support = No
comment = Wspolne pliki biurowe path = /home/biuro read only = No /etc/samba/smb.conf: [WSPOLNE] comment = Wspolne pliki biurowe path = /home/biuro read only = No force user = projektanci force group = biuro guest ok = Yes nt acl support = No [printers] comment = Tymczasowe pliki spoolingu path = /var/spool/samba printable = Yes use client driver = Yes browseable = No
root# useradd -m projektanci root# passwd projektanci Utworzyć użytkownika i grupę: root# groupadd biuro root# useradd -m projektanci root# passwd projektanci Changing password for projektanci. Utworzyć kartoteki: mkdir -p /home/{biuro/{pisma,oferty,faktury},cad} chown -R projektanci:biuro /home/biuro root# chmod -R ug+rwxs,o-w,o+rx /home/biuro /etc/hosts: 192.168.1.1 server
application/octet-stream Skonfigurować CUPS (samba udostępnia Windows tylko spooling, jest pośrednikiem między Windows i zewnętrznym systemem drukowania) lpadmin -p drukarka1 -v socket://192.168.1.20:9100 -E lpadmin -p hplj5 -v socket://192.168.1.30:9100 -E (-E – uruchamia drukarkę i spooling, accept + cupsenable) W pliku /etc/cups/mime.convs usunąć komentarz z linii: application/octet-stream application/vnd.cups-raw 0 - W pliku /etc/cups/mime.types usunąć komentarz z linii: application/octet-stream Uruchomić sambę: /etc/rc.d/init.d/smb restart (/etc/rc.d/rcX.d!)
Instalacja 3 Niewielka grupa robocza Komputery stacjonarne Kilka udziałów dyskowych, pliki różnych użytkowników Wspólne drukarki sieciowe
Użytkownicy Użytkownik Login Hasło Udział Kartoteka PC Joanna Kula joanna joanna12 asia /home/dane/asia PC1 Adam Biały adam adam13 /home/dane/adam PC2 Anna Borek ania ania14 /home/dane/ania PC3 Koziołek Matołek koza koza15 /home/dane PC4
root# useradd -m -G biuro Nazwa_użytkownika Utworzyć grupę: root# groupadd biuro Dla każdego użytkownika z tabeli: root# useradd -m -G biuro Nazwa_użytkownika root# passwd Nazwa_użytkownika smbpasswd -a Nazwa_użytkownika Utworzyć kartoteki: mkdir /home/dane chown koza /home/dane for i in asia adam ania do mkdir -p /home/data/$i chown $i /home/data/$i Done chgrp -R biuro /home/data chmod -R ug+rwxs,o-r+x /home/data
lpadmin -p hplj -v parallel:/dev/lp0 -E Skonfigurować drukarkę w CUPS: lpadmin -p hplj -v parallel:/dev/lp0 -E W pliku /etc/cups/mime.convs usunąć komentarz z linii: application/octet-stream application/vnd.cups-raw 0 - W pliku /etc/cups/mime.types usunąć komentarz z linii: application/octet-stream
show add printer wizard = No printing = cups [files] /etc/samba/smb.conf: [global] workgroup = PROJEKTY printcap name = CUPS disable spoolss = Yes show add printer wizard = No printing = cups [files] comment = Kartoteki użytkowników path = /home/data/%U read only = No [master] comment = kartoteka administratora path = /home/data valid users = koza
[printers] comment = Tymczasowe pliki spoolingu path = /var/spool/samba printable = Yes guest ok = Yes use client driver = Yes browseable = No
Adresy PC i drukarek z DHCP Instalacja 4 50-100 użytkowników Dwie podsieci Adresy PC i drukarek z DHCP Dwa udziały dla dwu grup użytkowników, prywatne udziały użytkowników udziałów dyskowych, pliki różnych użytkowników Użytkownicy mobilni Bez serwera DNS, serwer WINS Konstruktorzy Księgowość PC PC PC PC PC PC PC Serwer 'muza' 192.168.2.0/24 DHCP 192.168.1.0/24 DHCP HPLJ1 HPLJ2 HPLJ3 Domena GALAXY
echo 1 > /proc/sys/net/ipv4/ip_forward smbpasswd -a root W /etc/hosts wpisać adresy serwera i drukarek 192.168.1.1 muza muza1 192.168.2.1 muza2 192.168.1.10 hplj1 192.168.1.11 hplj2 192.168.2.10 hplj3 W /etc/rc.d/rc.local wpisać: echo 1 > /proc/sys/net/ipv4/ip_forward Dodać użytkownika root do samby. Będzie to administrator, nie należy go usuwać: smbpasswd -a root W /etc/samba/smbusers zamapować użytkownika administrator windows na użytkownika root: root = Administrator
net groupmap list | sort Utworzyć grupy użytkowników Unix groupadd konstruktorzy groupadd ksiegowosc Połączyć grupy domeny Windows z grupami UNIX net groupmap add ntgroup="Domain Admins" unixgroup=root type=d net groupmap add ntgroup="Domain Users" unixgroup=users type=d net groupmap add ntgroup="Domain Guests" unixgroup=nobody type=d Dodać grupy użytkowników net groupmap add ntgroup="Konstruktorzy" unixgroup=konstruktorzy type=d net groupmap add ntgroup="Ksiegowosc" unixgroup=ksiegowosc type=d type=d – typ 'domena' Sprawdzić grupy: net groupmap list | sort
mkdir -p /home/dane/{konstruktorzy,ksiegowosc} Dla każdego, kto ma korzystać z samby dodać użytkownika Unix (adduser) i samby (smbpasswd) Przydzielić użytkowników do właściwej grupy (vi /etc/group) Utworzyć kartoteki dla konstruktorów i księgowych: mkdir -p /home/dane/{konstruktorzy,ksiegowosc} chown -R root:root /home/dane chown -R koza:ksiegowosc /home/dane/ksiegowosc chown -R koza:konstruktorzy /home/dane/konstruktorzy chmod -R ug+rwx,o+rx-w /home/data Skonfigurować kolejki w CUPS, poprawić mime.convs, mime.types: lpadmin -p hplj1 -v socket://192.168.1.11:9100 -E lpadmin -p hplj2 -v socket://192.168.1.10:9100 -E lpadmin -p hplj3 -v socket://192.168.2.10:9100 -E
option domain-name "galaxy.biz"; Skonfigurować serwer DHCP (/etc/dhcpd.conf): default-lease-time 86400; max-lease-time 172800; option ntp-servers 192.168.1.1; option domain-name "galaxy.biz"; option domain-name-servers 192.168.1.1, 192.168.2.1; option netbios-name-servers 192.168.1.1, 192.168.2.1; option netbios-node-type 8; ### NOTE ### # netbios-node-type=8 means set clients to Hybrid Mode # so they will use Unicast communication with the WINS # server and thus reduce the level of UDP broadcast # traffic by up to 90%. ############
subnet 192.168.1.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.1.128 192.168.1.254; option subnet-mask 255.255.255.0; option routers 192.168.1.1; allow unknown-clients; host hplj1 { hardware ethernet 08:00:46:7a:35:e4; fixed-address 192.168.1.10; } host hplj2 { hardware ethernet 00:03:47:cb:81:e0; fixed-address 192.168.1.11;
subnet 192.168.2.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.2.128 192.168.2.254; option subnet-mask 255.255.255.0; option routers 192.168.2.1; allow unknown-clients; host hplj3 { hardware ethernet 01:04:31:db:e1:c0; fixed-address 192.168.1.10; } subnet 127.0.0.0 netmask 255.0.0.0 {
username map = /etc/samba/smbusers syslog = 0 smb.conf: [global] workgroup = GLAXY passwd chat = *New*Password* %n\n*Re- enter*new*password* %n\n *Password*changed* username map = /etc/samba/smbusers syslog = 0 name resolve order = wins bcast hosts printcap name = CUPS show add printer wizard = No add user script = /usr/sbin/useradd -m -G users '%u' delete user script = /usr/sbin/userdel -r '%u' add group script = /usr/sbin/groupadd '%g' delete group script = /usr/sbin/groupdel '%g'
add user to group script = /usr/sbin/usermod -A '%g' '%u' add machine script = /usr/sbin/useradd -s /bin/false -d /var/lib/nobody '%u' logon script = scripts\login.bat logon path = logon drive = X: domain logons = Yes preferred master = Yes wins support = Yes printing = CUPS
comment = Home Directories valid users = %S read only = No [homes] comment = Home Directories valid users = %S read only = No browseable = No [printers] comment = SMB Print Spool path = /var/spool/samba printable = Yes guest ok = Yes use client driver = Yes
comment = Network Logon Service path = /data/%U valid users = %S [netlogon] comment = Network Logon Service path = /data/%U valid users = %S read only = No
comment = Dane konstruktorow path = /home/dane/konstruktorzy valid users = %G read only = No [ksiegowosc] comment = Finanse i ksiegowosc path = /home/dane/ksiegowosc
testparm -s (poprawność smb.conf) Uruchomić smb, dhcp, cups Sprawdzić: testparm -s (poprawność smb.conf) smbclient -L localhost -U% (połączenie anonimowe) smbclient //muza/ksiegowosc -U koza Password: XXXXXXX (połączenie autoryzowane)
Dwie podsieci, łącze do internetu – firewall, wirusy Instalacja 5 100-500 użytkowników Dwie podsieci, łącze do internetu – firewall, wirusy Adresy PC i drukarek z DHCP Dwa udziały dla dwu grup użytkowników, prywatne udziały użytkowników udziałów dyskowych, pliki różnych użytkowników Skrypty logowania, profile mobilne serwer DNS Konstruktorzy Księgowość PC PC PC PC PC PC PC Serwer 'muza' eth1 eth2 192.168.2.0/24 DHCP 192.168.1.0/24 DHCP HPLJ1 HPLJ2 eth0 HPLJ3 Internet Domena GALAXY
W /etc/hosts dodać nazwy i adresy interfejsów lokalnych Dodać routing między interfejsami Skonfigurować i uruchomić firewall (iptables) Zainstalować Samba, bind, dhcpd
interfaces = eth1, eth2, lo (bez tego nie słucha na lo) smb.conf [global] workgroup = GALAXY netbios name = MUZA interfaces = eth1, eth2, lo (bez tego nie słucha na lo) bind interfaces only = Yes (słucha tylko na wymienionych interfejsach) passdb backend = tdbsam pam password change = Yes passwd program = /usr/bin/passwd %u passwd chat = *New*Password* %n\n *Re- enter*new*password*%n\n *Password*changed* username map = /etc/samba/smbusers unix password sync = Yes log level = 1 (debugging) syslog = 0 log file = /var/log/samba/%m max log size = 50 smb ports = 139 name resolve order = wins bcast hosts
time server = Yes printcap name = CUPS show add printer wizard = No add user script = /usr/sbin/useradd -m '%u' delete user script = /usr/sbin/userdel -r '%u' add group script = /usr/sbin/groupadd '%g' delete group script = /usr/sbin/groupdel '%g' add user to group script = /usr/sbin/usermod -G '%g' '%u' add machine script = /usr/sbin/useradd -s /bin/false -d /tmp '%u' shutdown script = /var/lib/samba/scripts/shutdown.sh abort shutdown script = /sbin/shutdown -c logon script = scripts\logon.bat logon path = \\%L\profiles\%U logon drive = X: logon home = \\%L\%U domain logons = Yes
preferred master = Yes wins support = Yes utmp = Yes map acl inherit = Yes (ACL Windows będą mapowane na rozszerzone atrybuty Unix (POSIX), inherit - dziedziczyć) printing = cups cups options = Raw veto files = /*.eml/*.nws/*.{*}/ (pliki niewidoczne i readonly) veto oplock files = /*.doc/*.xls/*.mdb/ (te pliki bez veto, są często używane, będzie szybciej)
[homes] comment = Home Directories valid users = %S (%S – current servicename) read only = No browseable = No [printers] comment = SMB Print Spool path = /var/spool/samba guest ok = Yes printable = Yes use client driver = Yes default devmode = Yes (ustaw domyślne Device Mode – rozmiar papieru, orientacja etc. - nie z każdym driverem będzie OK)
[netlogon] comment = Network Logon Service path = /var/lib/samba/netlogon guest ok = Yes locking = No [profiles] comment = Profile Share path = /var/lib/samba/profiles read only = No profile acls = Yes [ksiegowosc] comment = Finanse i ksiegowosc path = /home/dane/ksiegowosc
[service] comment = Financial Services Files path = /home/dane/service read only = No [pidata] comment = Ubezpieczenie path = /home/dane/polisy [apps] comment = Aplikacje path = /home/apps read only = Yes admin users = bjordan
mkdir -p /var/spool/samba Utworzyć użytkownika root, grupy użytkowników, zamapować grupy, utworzyć kartoteki robocze jak w poprzedniej instalacji Utworzyć kartoteki spoolingu i profili użytkowników: mkdir -p /var/spool/samba mkdir -p /var/lib/samba {netlogon/scripts,profiles} chown -R root:root /var/spool/samba chown -R root:root /var/lib/samba chmod a+rwxt /var/spool/samba chmod 2775 /var/lib/samba/profiles chgrp users /var/lib/samba/profiles Dla każdego użytkownika: mkdir /var/lib/samba/profiles/'username' chown 'username':users /var/lib/samba/profiles/'username' chmod ug+wrx,o+rx,-w /var/lib/samba/profiles/'username' Utworzyć skrypt logowania, (Uwaga na CR/LF) /var/lib/samba/netlogon/scripts/logon.bat: net time \\diamond /set /yes net use h: /home net use p: \\diamond\apps
Skonfigurować serwer DHCP jak w instalacji 4, z globalnymi parametrami jak niżej: default-lease-time 86400; max-lease-time 172800; option ntp-servers 192.168.1.1; option domain-name "abmas.biz"; option domain-name-servers 192.168.1.1, 192.168.2.1; option netbios-name-servers 192.168.1.1, 192.168.2.1; option netbios-node-type 8; ### Node type = Hybrid ### ddns-updates on; ### Dynamic DNS enabled ### ddns-update-style interim;
directory "/var/lib/named"; listen-on { mynet; }; auth-nxdomain yes; Skonfigurować serwer DNS. /etc/named.conf: options { directory "/var/lib/named"; listen-on { mynet; }; auth-nxdomain yes; multiple-cnames yes; notify no; ....... acl mynet { 192.168.1.0/24; 192.168.2.0/24; 127.0.0.1;
zone "galaxy.biz" { type master; file "/var/lib/named/master/galaxy.biz.hosts"; allow-query { mynet; }; allow-transfer { allow-update {
hosts: files dns wins W /etc/resolv.conf wpisać lokalny DNS W /etc/nsswitch.conf: hosts: files dns wins Skonfigurować drukarki jak w instalacji 4 Uruchomić named, dhcpd, cups, samba Sprawdzić działanie jak w instalacji 4 Dołączyć komputery do domeny jako użytkownik root