Samba

Ondrej Kocian, xkocian2 at fi

Uvod

Samba je Open Source/Free Software psaný pod licencí GNU GPL (GNU's Not Unix, General Public License). Jeho primárním cílem je implemetace CIFS sluzeb pro jiné (unixové) systemy.

Samba is software that can be run on a platform other than Microsoft Windows, for example, UNIX, Linux, IBM System 390, OpenVMS, and other operating systems. Samba uses the TCP/IP protocol that is installed on the host server. When correctly configured, it allows that host to interact with a Microsoft Windows client or server as if it is a Windows file and print server.

The goal behind the project is one of removing barriers to interoperability.

(http://us3.samba.org/samba/what_is_samba.html)

Historie

Autor samby, Andrew Tridgell, vydal první verzi v roce 1992 pod názvem smbserver (později změněno na Samba). K této skutečnosti ho vedla potřeba sdílet svoje data uložená na Unixovém serveru pro DOS PC s podporou protokolu NetBIOS. Zakladem jména Samby je SMB, tj. zkratka protokolu, který byl vyvinut v IBM. Pozdiji Microsoft tuto implementaci spojil s LAN managerem (1990) a nakonec SMB přejmenoval na CIFS (Common Internet File System, 1996).
Koncem roku 2007 dostává Samba Team po dohodě kompletní dokumentaci Microsoft protokolu (http://www.informationweek.com/news/software/open_source/showArticle.jhtml?articleID=205101451) (doposud na základě reverse engineering)

Součastnost

Nyní na projektu Samba pracuje celý tým developerů (The Samba Team). Implementace celé řady služeb: svobodná implementaci SMB a CIFS(Common Internet File System, vyšší verze SMB ) protokolu, NetBIOS (Network Basic Input Output System), DCE/RPC (Distributed Computing Environment / Remote Procedure Calls). Jako primární cíl Samby by se dala označit implemetace protokolu CIFS a jeho služeb. O to se starají dva klíčové programy smbd a nmbd:

Autorizace a autentizace
- share mode: sdilene heslo
- user mode: login, heslo pro každého uživatele
Domain Controller - myšlenka autentizačního server, není třeba se přihlašovat víckrát pro různé služby
NT Domain - skupina počítačů, která sdílý stejný Domain Controller
Překlad jmen
- broadcast: volani do sítě, čekání na odpověď
- point-to-point: používá NBNS (NetBIOS Name Service) server, (WINS - Windows Internet Name Service) = databaze jmeno - ip, dynamické
Procházení sítě
- volba LMB (Local Master Browser), vítěz udržuje seznam dostupných služeb
- DMB (Domain Master Browsers) coordinuji seznam. LMB pomoci NBNS najde DMBs, kombinují a vyměňují si seznamy

Další služby:

smbclient - jednoduchy SMB klient, podobné FTP, připojení k SMB, přenos souborů, tisk
nmblookup - klient pro vyhledávání NetBIOS jmen-ip v síti
smbtar - zálohovaní sdílených dat
testparm - validace smb.conf
swat - The Samba Web Administration Tool - web browser
smbstatus - informace o sdílení, spuštěných procesech, zamčených souborech
smbget - wget
smbmount/smbumount - mount/umount
$ smbpasswd --help smbpasswd: invalid option -- '-' When run by root: smbpasswd [options] [username] otherwise: smbpasswd [options] options: -L local mode (must be first option) -h print this usage message -s use stdin for password prompt -c smb.conf file Use the given path to the smb.conf file -D LEVEL debug level -r MACHINE remote machine -U USER remote username extra options when run by root or in local mode: -a add user -d disable user -e enable user -i interdomain trust account -m machine trust account -n set no password -W use stdin ldap admin password -w PASSWORD ldap admin password -x delete user -R ORDER name resolve order

Instalace

Aktuální verze Samby 3.2.4 je volne ke stazeni na http://us6.samba.org/samba/ (http://us6.samba.org/samba/).
Gentoo: emerge -av samba
debian: apt-get install samba samba-client
yum install samba
wget http://samba.org/samba/ftp/samba-latest.tar.gz gzip -d samba-latest.tar.gz tar xvf samba-latest.tar cd samba-latest ./configure make make install

Konfigurace

Spočívá v editaci smb.conf
[nazev_sdileni_1] nastaveni1 = hodnota nastaveni2 = hodnota1, hodnota2 nastaveni3 = hodnota1 hodnota2 [nazev_sdileni_2] # komentar 1 ; komentar 2 vice radkovy \ zapis
include - přidává externí soubory do konfigurace
load printers - automaticky se budou načítat tiskárny
printer admin - specifikace administratorů tiskáren, udáva se jména uživatelů nebo @skupina
local master - má se server stát hlavním prohlížečem v síti?
wins support - má povolit v NMBD WINS server
wins server = IP - určení serveru NMBD

browsable - definuje zda se má sdílený prostředek zobrazit ve výpisu
create mask - maska se kterou se budou vytvářet složky a soubory
guest ok - povolení přistupu bez autorizace
path - cesta ke sdílenému prostředku
printable - určeno pro tiskárny, povolení posílání souborů
public - prostředek nevyžaduje heslo
read only - povoleno jen čtení
valid users - seznam uživatelů, kteří mohou přistoupit k bodu
write (read) list - seznam uživatelů, kteří mohou číst/zapisovat
writable - právo zápisu

%U - uživatelské jméno, které vyžadoval klient %H
%u - uživatelské jméno samba služby - může se lišit od %U
%m - NetBIOS jméno klientského stroje
%L - NetBIOS jméno serveru
%H - domovský adresář klienta %u
%S - jméno aktuální
%D - jméno domény aktuálního uživatele
%i - IP adresa stroje na který se uživatel přihlašuje
%I - IP adresa klienta
[global] workgroup = lab netbios name = prodavac # security mode security = user # tisk printing = cups # logovani log level = 2 log file = /var/log/samba/log.%m max log size = 50 # backend pro hesla passdb backend = smbpasswd # omezeni pristupu podle IP hosts allow = 192.168.2.0/24 127.0.0.1 hosts deny = 0.0.0.0/0 interfaces = 192.168.2.254/24 guest ok = yes username map = /etc/samba/smbusers # soubor definujici sdileni # include = /etc/samba/shares.conf [printers] comment = SMB Print Spool path = /var/spool/samba # ! printable = Yes guest ok = Yes use client driver = Yes browseable = No [public] comment = Public Files browseable = yes public = yes create mode = 0766 guest ok = yes path = /home/samba/public # encrypt passwords = yes - Samba je má nastaveno dekódování hesel # smb passwd file = /etc/smbpasswd - cesta k souboru s hesly pro Sambu. # unix password sync = yes - hesla v /etc/smbpasswd jsou automaticky synchronizována s hesly příslušných uživatelů (unixových, linuxových) serveru # null passwords = yes - Jsou povoleni klienti bez hesla (guest).

Samba jako PDC

Nastavení samby pro praci s ldap # kam ulozit hesla? jine mozne backendy: guest, tdbsam, smbpasswd, plaintext (passwd) passdb backend = ldapsam:ldap://127.0.0.1 # IDEALX skripty add user script = /usr/sbin/smbldap-useradd -m "%u" delete user script = /usr/sbin/smbldap-userdel "%u" add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u" add group script = /usr/sbin/smbldap-groupadd -p "%g" delete group script = /usr/sbin/smbldap-groupdel "%g" add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g" delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g" set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u' passwd program = /usr/sbin/smbldap-passwd -u %u # chceme byt domenovy radic, browser, time a wins server domain logons = Yes local master = Yes os level = 99 domain master = Yes preferred master = Yes time server = yes wins support = yes ## skripty po prihlaseni (spousteny s pravy uzivatele!) # batch podle stroje ; logon script = %m.bat # batch podle uzivatele logon script = %U.bat # batch pro vsechny logon script = vsichni.bat # profily a home logon path = \\%L\Profiles\%U logon home = \\%L\%U logon drive = H: # LDAP ldap admin dn = cn=Manager,dc=domena,dc=cz ldap delete dn = No ;ldap filter = (uid=%u) ldap group suffix = ou=Groups ldap idmap suffix = ou=Idmap ldap machine suffix = ou=Computers ldap passwd sync = Yes ;ldap replication sleep = 1000 ;ldap ssl = Start_tls ldap suffix = dc=domena,dc=cz ldap timeout = 5 ldap user suffix = ou=People #sdileni [homes] comment = Home Directories path = %H/smbhome valid users = %S # uzivatel, ktery muze vse admin users = administrator read only = No create mask = 0664 browseable = No ;follow symlinks = yes [netlogon] comment = Network Logon Service path = /var/lib/samba/netlogon guest ok = Yes share modes = No [Profiles] comment = Users profiles path = /var/lib/samba/Profiles read only = No create mask = 0600 directory mask = 0700 browseable = No