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:
- Sdílení souboru a tisku (smbd)
- Autorizace a autentizace: share, user mode (smbd)
- překlad jmen: broadcast, point-to-point (nmbd)
- Procházení sítě (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
- http://us6.samba.org/samba/docs/SambaIntro.html
- http://wiki.samba.org/index.php/Main_Page
- http://en.wikipedia.org/wiki/GNU_Project
- http://en.wikipedia.org/wiki/Samba_(software)
- http://cs.wikipedia.org/wiki/Server_Message_Block
- http://us6.samba.org/samba/docs/SambaIntro.html
- archiv