Debian Squeeze Samba3 fájlmegosztás, tartomány

Fájlmegosztás és a tartománykezelő samba-t konfiguráljuk be, hogy a gépeket betudjuk jelentkeztetni a hálózatba.

Telepítsük fel a samba-t:

apt-get install samba samba-doc smbclient smbldap-tools

Az /etc/samba/smb.conf fájlban találjuk a konfigurációs beállításainkat. Mi az ldap-ból fogjuk az adatokat kinyerni, de lehetne más megoldást is választani, de mi most azzal nem foglalkozunk.

Nagyon sok beállítási lehetőség van, csak a számunkra lényegesebbeket sorolom fel. A global szekcióban a mindenre érvényes beállításokat találjuk. Állítsuk be a logolási szintet majd, hogy hova mentse a logfájlokat és a méretüket. Általában ezekkel nem kell törődni, mert alapból megfelelőek.
[global]

; include = /home/samba/etc/smb.conf.%m

log level = 3 passdb:5 auth:10

log file = /var/log/samba/log.%m
max log size = 1000
max mux = 200
; syslog only = no
syslog = 0
panic action = /usr/share/samba/panic-action %d

Állítsuk be a tartományunk nevét amibe majd beléptetjük a gépeket. Adjuk meg a gépünk nevét és azokat az ip tartományokat amikre engedélyezni szeretnénk a samba elérését.

unix extensions = no
workgroup = TARTOMANY
netbios name = Server
server string = %h server

browseable = yes

hosts deny = ALL
hosts allow = 127.0.0.1 10.
interfaces = 10.1.0.0/8
inherit permissions = no
protocol=NT1

A lenny-be még működött ez a formája az ip címek megadásának a hosts allow paraméternél, hogy "10.", de squeeze-ben nem akart működni(szidtuk is egy kissé, hogy miért is nem akar menni). Úgyhogy javítsuk át arra a formára, hogy 10.0.0.0/255.0.0.0, vagy amire szeretnénk.

Állítsuk be, hogy legyen user azonosítás és tartomány vezérlő lehessen a szerverünk.

security = user
local master = yes
os level = 255
domain master = yes
preferred master = yes
domain logons = yes

Állítsuk be a felhasználói azonosítás paramétereit:

password level = 10
username level = 0
null passwords = no
encrypt passwords = true
passdb backend = ldapsam:"ldap://localhost"
ldap timeout = 5

Majd az ldap elérhetőségének az adatait:

ldap admin dn = cn=admin,dc=ceg,dc=hu
ldap suffix = dc=ceg,dc=hu
ldap group suffix = ou=Groups
ldap user suffix = ou=Users
ldap machine suffix = ou=Computers
ldap idmap suffix = ou=Idmap
ldap ssl = off

Fontos még, hogy a gép tartományba vételét segítő script is meglegyen adva:

add machine script = /usr/sbin/smbldap-useradd -w "%u"
# ldap delete dn = yes
# add user script = /usr/sbin/smbldap-useradd -m "%u"
# delete user script = /usr/sbin/smbldap-userdel "%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'

Jelszavakkal kapcsolatos további beállítások:

ldap passwd sync = yes
# unix password sync = yes
passwd program = /usr/sbin/smbldap-passwd -u %u
passwd chat = "Changing password for*\nNew password*" %n\n "*Retype new password*" %n\n"
obey pam restrictions = no

Vegyük fel, hogy kik legyenek az adminok akiknek van jogosultsága tartományba tenni a gépeket. A root felhasználót nem szabad felvenni se az ldap-ba se a samba-ba, ezért tiltjuk(ha valahogy megtesszük csúnya dolgok fognak történni).

admin users = administrator systemadmin1 systemadmin2
invalid users = root
guest account = vendeg

Login scriptek és wins szerver beállítások:

logon script = scripts\%U.bat
# logon path = \\%N\profile
logon path =
logon home =

wins support = yes
wins server =
wins proxy = no
dns proxy = no
name resolve order = wins bcast host

Nyomtató megosztások(mi nem használjuk őket).

########## Printing ##########
load printers = no
; printing = bsd
; printcap name = /etc/printcap
; printing = cups
; printcap name = cups
; printer admin = @ntadmin

Fájl megosztások, milyen módon milyen jogokkal jöhetnek létre.

######## File sharing ########
veto files = /lost+found/ /nemtorolheto/ /aquota.group/
unix charset = iso8859-2
dos charset = 850
preserve case = yes
short preserve case = yes
case sensitive = no
default case = lower
map archive = yes
map system = yes
map hidden = yes
create mask = 0775
directory mask = 0775
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192 SO_KEEPALIVE
# Microsoft Access miatt
oplocks = no
level2 oplocks = no
# locking = no
# blocking locks = no

Ezután a megosztások következnek, nyomtató megosztások:

# The following parameter is useful only if you have the linpopup package
# installed. The samba maintainer and the linpopup maintainer are
# working to ease installation and configuration of linpopup and samba.
; message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' &

#======================= Share Definitions =======================

[printers]
comment = Nyomtatok
printable = yes
path = /tmp

Netlogon megosztásba bat fájlokat rakunk. Ezeket a fájlokat automatikusan lefuttatja a az operációs rendszer amikor bejelentkezünk egy felhasználóval.

[netlogon]
comment = Network Logon Service
path = /mnt/samba/netlogon
writeable = no
public = yes
printable = no
browseable = no

Egy netlogon fájl tartalma lehet pl ilyesmi:
@echo off

echo ************************************
echo * Halozati beallitasok letrehozasa *
echo * Kerem varjon turelemmel!!! *
echo * Ne zarja be az ablakot!!! *
echo ************************************
rem Halozati meghajtok torlese
net use * /del /yes

rem Intranet kezdolapnak
reg add "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /v "Start Page" /t REG_SZ /d "http://intranet/" /f
rem Halozati meghajtok felcsatolasa
net use x: \\szerver\admin
net use y: \\szerver\mappa

Itt meglehet a profiloknak adni a helyét. Lehetne használni vándorló profilt, de mi nem tesszük, mert mindent beleszemetelnének és a lassúvá válna a bejelentkezés amitől mindenki siránkozni kezdene :) De van amikor hasznos funkció lehet.

[profile]
path = /mnt/samba/profiles/%U
browseable = no
public = yes
writeable = no
printable = no

Homes mappák mindenkinek egyedi saját mappája legyen:

[homes]
comment = Sajat konyvtar
path = /mnt/smbhome/%U
writeable = yes
browseable = yes
public = no
printable = no
valid users = %U
write list = %U

Egy megosztás, amit minden dolgozó elér viszont írni bele csak az informatikusok tudnak:
[info]
comment = Info
path = /mnt/samba/info
writeable = no
browseable = yes
public = no
printable = no
valid users = @dolgozok
write list = @informatika
group = dolgozok

Egy megosztás amit csak a gazdasagi user(nem csoport!) tud elérni:
[gazdasagi]
comment = Gazdasagi
path = /mnt/samba/gazdasagi
writeable = no
browseable = yes
public = no
printable = no
valid users = gazdasagi
write list = gazdasagi
group = gazdasagi

Miután készen vagyunk a konfigurálással, újra indíthatjuk a samba-t: /etc/init.d/samba restart Majd adjuk ki a következő parancsot, hogy az ldap-s jelszavunkat hozzáadjuk különben nemfog tudni hozzáférni az adatokhoz: smbpasswd -w jelszó

Ezután még konfiguráljuk be az smbldap-tools csocmagot amit /etc/smbldap-tools mappában található konfig fájlokkal tehetünk meg. Ha nincsenek benne fájljaink, akkor szerezzük be őket.

zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz >
/etc/smbldap-tools/smbldap.conf

cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf
/etc/smbldap-tools/smbldap_bind.conf

(sajnos nem tudta eltörni a sorokat jól, a felső sorban " > " szerepel két szóközzel körülvéve, az alsónál pedig sima " " szóköz van a két sor között, de minden esetben folytatólagos, tehát nincs egyetlen enter se ütve! )

A smbldap-bind.conf fájlba kell megadni az ldap elérhetőségeit, elegendő csak mastert megadni, de lehet slavet is akár. Írjuk az alábbi sorok kellenek:

masterDN="cn=admin,dc=ceg,dc=hu"
masterPw="jelszó"

slaveDN="cn=Manager,dc=idealx,dc=org"
slavePw="secret"

A smbldap.conf fájlban rengeteg beállítási lehetőség van, most csak a pillanatnyilag fontosakat nézzük meg.

Tartomány nevét állítsuk be:
sambaDomain="TARTOMANY"

Konfiguráljuk az ldap elérhetőségét és hogy mi nem használunk tls-t(aki biztonságosabb akar lenni az használjon, az smb.conf-ban is, akkor be kell állítani a samba-ban!):
masterLDAP="127.0.0.1"
masterPort="389"

slaveLDAP="127.0.0.1"
slavePort="389"

ldapTLS="0"

Állítsunk még be pár információt pl a levelező domainünket is:
suffix="dc=ceg,dc=hu"

sambaUnixIdPooldn="sambaDomainName=TARTOMANY,${suffix}"

mailDomain="mail.ceg.hu"

Ezután már működőképesnek kell lennie a samba-nak.

Teszt parancsok:

testparm megosztások beállítások tesztelése listázása

smbclient -L server -U felhasznalo -d 0 bekéri a jelszót és kiírja az adatokat a felhasználóról, ha minden működik.

Ugyanezt csinálja a következő parancs is csak más formában más információkat ad vissza:

pdbedit -Lv felhasznalo

Melyik csoportokba tartozik a felhasználó:
id felhasznalo

Melyik felhasználók tartoznak az alábbi csoportba:
getent group csoportnév

Felhasználókat hozzáadni az smbldap-useradd parancsal lehet megfelelően paraméterezve. Erre érdemes lehet írni egy scriptet, mert elég sok kapcsolóval érdekes információkat lehet felvenni elsőre amikor hozzáadunk egy felhasználót(erre van egy nem publikus scriptünk, majd meglátjuk hova fér bele az írásokba vagy nem fér bele). Aki ugye rögtön bekerül az ldap-ba.

Jelszót változtatni smbldap-passwd felhasznalo paranccsal lehet.

Win7 esetén fordul elő az a hiba, hogy a kliens gépek nem hajlandóak belépni a tartományba. Ezért meg kell hackelni a win7-ek regisztrációs adatbázisát. A következő két sort kell hozzáadni vagy módosítani és egy újra indítás után már lehet is próbálkozni belépni a tartományba. Ha a gépen nincs sp1, akkor csúnya hiba üzenetet fog dobni, de tovább enged és utána belép a tartományba mindenféle gond nélkül működni fog. Ha van sp1 a kliensen, akkor hibaüzenet nélkül fog menni.

HKLM\System\CCS\Services\LanmanWorkstation\Parameters
DWORD DomainCompatibilityMode = 1
DWORD DNSNameResolutionRequired = 0

Pár hiba amik előfordultak az idők során:

Ha a symlinkekkel valami gond van, mert nem mennek akkor a follow symlinks = yes paramétert a problémás megosztásba írjuk be a smb.conf fájlban a samba-ban.

Valamelyik samba update esetén fordult elő valami samba dependencies hiba. A logokban erre utaló hibákról írkált a samba. Pontosan nem tudom már, hogy mi is volt a gond, de fel van írva, hogy ezek a parancsok lefuttatásával oldódott meg a hiba:

dpkg -l | grep samba
dpkg --configure --pending

Olvasni valók:

Samba.org
Samba
Samba kiszolgáló
Hálózati hitelesítés
Samba PDC+LDAP+PAM/NSS Debian Lennyn
Symlinket probléma
win7+samba tartomány

2013.02.24.