< Samba

Samba fájlmegosztás

Szerző: Sallai András

Copyright © Sallai András, 2011, 2016, 2017, 2018, 2019

Licenc: GNU Free Documentation License 1.3

Web: http://szit.hu

Bevezetés

A Samba egy programgyűjtemény, amely Unix, Linux rendszereken megvalósítja az SMB protokollt. Az SMB a Server Message Block szavakból alkotott betűszó. Szokás még CIFS néven is említeni, amely a Common Internet File System szavakból alkotott betűszó.

Az SMB a Windowsos világ terméke, segítségével fájlokat, nyomtatókat tudunk megosztani Windowsok között. A unixos, linuxos rendszerek részt vehetnek a fájl és nyomtatómegosztásban a Samba segítségével.

Telepítés

A samba csomagban három démon található, amelyből telepítés után kettő indul el. A telepítendő csomag neve a samba, ezek utána telepítés:

apt install samba

2017-ben a Debian 9.2.1-es rendszerben a Samba 4 verziója telepszik.

A samba vezérlélse

A samba telepítésével két démon kerül telepítésével, amelyek azonnal el is indulnak:

smbd

nmbd

A samba a systemd vezérlő parancsaival kezelhető. Nézzük meg a milyen állapotban van az smbd démon:

systemctl status smbd

# systemctl status smbd
● smbd.service - Samba SMB Daemon
Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2017-10-27 19:23:49 CEST; 6min ago
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 373 (smbd)
Status: "smbd: ready to serve connections..."
Tasks: 4 (limit: 4915)
CGroup: /system.slice/smbd.service
├─373 /usr/sbin/smbd
├─376 /usr/sbin/smbd
├─377 /usr/sbin/smbd
└─387 /usr/sbin/smbd
okt 27 19:23:47 iskolazo systemd[1]: Starting Samba SMB Daemon...
okt 27 19:23:49 iskolazo systemd[1]: smbd.service: Supervising process 373 which is no
okt 27 19:23:49 iskolazo systemd[1]: Started Samba SMB Daemon.

Újraindítás:

systemctl restart smbd nmbd

Leállítás:

systemctl stop smbd nmbd

Indítás:

systemctl start smbd nmbd

Megosztás beállítása

A példa kedvéért legyen egy szerver, ami a 192.168.10.2 IP címen érhető el.

Hozzunk létre egy könyvtárat a következő helyen: /home/samba/info

mkdir -p /home/samba/info

Ez lesz a hálózaton megosztott könyvtár.

Nevezzük át az eredeti konfigurációs állományt:

# cd /etc/samba
# mv smb.conf smb.conf.backup

Megjegyzések nélkül szeretnénk egy konfigurációs állományt, a mentésből állítsunk össze egy alapot:

# cat smb.conf.backup | egrep -v "(#|;)" | grep . > smb.conf

Vegyük fel a saját megosztásunkat, ehhez írjuk a /etc/samba/smb.conf állomány végére:

[info]
path = /home/samba/info
comment = Teszt Info csoport megosztas
guest ok = yes

Ellenőrzéshez telepítsük az smbclient programot:

# apt install smbclient

Ellenőrzés:

$ smbclient -L localhost

$ smbclient -N //192.168.10.2/info

A -N opció hatására a program nem kér jelszót. Nincs is rá szükség, mivel a megosztásunknak guest ok = yes beállítás van megadva. A -N helyett használható a --no-pass is.

A testparm paranccsal lekérdezhetők a beállított kapcsolók.

testparm

Vagy:

testparm -v

Felhasználó kezelése

Felhasználó felvétele

Felvesszük Linuxon a felhasználót:

adduser mari

Felvesszük a Samba számára is:

smbpasswd -a mari

A jelszavak a következő helyen tárolódnak:

/var/lib/samba/private/passdb.tdb

Régebben: /var/lib/samba/private/sam.ldb

A fenti info megosztással teszt:

smbclient -U mari //192.168.10.2/info

A samba-tool user add joska parancs itt nem alkalmazható. Ezt csak AD tartományvezérlő esetén használjuk.

Törlés, engedés

Törlés:

# smbpasswd -x joska

Letiltás:

# smbpasswd -d joska

Engedélyezés:

# smbpasswd -e joska

Felhasználó jelszavának cseréje

A létező linuxos felhasználónak külön Samba jelszót kell beállítani:

# smbpasswd joska

vagy:

# smbpasswd -U joska

Felhasználók és adatainak megtekintése

Felhasználók listázása (rendszergazdaként):

pdbedit -L

Több info:

pdbedit -L -w

Felhasználók több információval:

pdbedit -L -v

Jogosult felhasználók

A megosztásokat az /etc/samba/smbd.conf fájlban állítjuk be. Egy megosztáshoz érvényes felhasználók megadása a valid users kulcsszavakkal történik. A felhasználók helyett megadható csoport neve is, de a csoportok neve elé tegyünk egy @ karaktert.

Felhasználó és csoport példa:

valid users = joska mari @info

Szeretnék egy olyan megosztást, amelyet csak felhasználóval és jelszóval lehet elérni.

[iroda]
path = /home/samba/iroda
comment = Irodai dolgozok
guest ok = no
read only = no
valid users = mari kati @iroda

Módok beállítása

Milyen joggal jöjjön létre egy könyvtár:

force directory mode = 770

force create mode = 770

Milyen csoporttal jöjjön létre fájl vagy könyvtár:

force group = bureau

Milyen felhasználóval és csoporttal jöjjön létre fájl vagy könyvtár:

force user = joska

Szimbolikus linkek követése

[global] ... allow insecure wide links = yes [megosztas] ... follow symlinks = yes wide links = yes

Fájlok szemetesbe helyezése törlés helyett

vfs objects = recycle

A törölt fájlok egy .recycle nevű könyvtárba kerülnek a megosztás gyökerében. Ha töröltünk egy akarmi.txt nevű fájlt, és újra töröljük azt, akkor a .recycle nevű könyvtárban felülírja az előzőt. Ha minden verziót szeretnénk megőrizni, akkor a következő beállítás szükséges:

vfs objects = recycle
recycle:versions = Yes

Ha más nevet szeretnénk adni a szemetesnek, akkor a „repository” tulajdonsággal tudjuk megtenni:

vfs objects = recycle
recycle:repository = kuka

Megadhatunk abszolút útvonalat is:

vfs objects = recycle
recycle:repository = /home/kuka

Ekkor a /home/kuka nevű könyvtárnak megfelelő jogok szükségesek:

chmod 777 /home/kuka

Ha néhány kiterjesztés esetén nem szeretnénk a szemetesbe helyezést hanem törlést, akkor azt az „exclude” tulajdonsággal tudjuk megtenni.

recycle:exclude = *.tmp *.temp *.swp

Könyvtárstruktúra megtartása

recycle: keeptree = yes

Verziók megtartása ne legyen néhány kiterjesztésnél:

recycle: noversions = *.doc|*.ppt|*.xls

Fájlok törlésének, változtatásának naplózása

Az extd_audit modul lehetővé teszi a felhasználók nyomonkövetését.

vfs objects = extd_audit

Létezik még az audit és a full_audit modul.

Ha extd_audit és a recycle modult is szeretnénk használni, akkor tegyük így:

vfs objects extd_audit recycle

Az extd_audit használata esetén állítsuk be a global részben a naplózást:

syslog = 0
log file = /var/log/samba/%U.%m.log
log level = 0 vfs:2

A %U hatására a fájnévben a felhasználónév szerepel, a %m hatására pedig a kliens gép neve. A műveletek a /var/log/syslog fájlban is megjelennek, a fájl vagy könyvtár törlése azonban a felhasználó naplóállományában külön kiírásra kerül. A fájl törlése „unlink” kulcsszóval jelenik meg.

VFS trükk

A recycle modul segítségével egy adott állományról, könyvtárról kideríthető ki törölte azt. A beállítás a következő:

[global] ... vfs objects = recycle recycle:repository = /home/kuka/%U ..

A %U megadásával a kuka könyvtárban létrejön egy könyvtár, annak felhasználónak a nevével, aki a törlést végezte. A törölt fájl ebbe a könyvtárba kerül.

Minta

Minta 1

vfs objects = recycle
recycle:repository = .Lomtar
recycle:keeptree = 1
recycle:touch_mtime =true
recycle:versions = 1
recycle:maxsize = 20000000
recycle:exclude = *.tmp *.temp *.o *.obj ~$* *.dat *.zip *.mp3 *.wav
recycle:exclude_dir=*.Lomtar* *xx *ab

Minta 2

vfs objects = recycle
recycle:repository = .deleted/%U
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsixe = 0
recycle:exclude = *.tmp
recycle:exclude_dir = /tmp
recycle:noversions = *.doc

Minta 3

vfs object = recycle
recycle:repository = .recycle/%u
recycle:maxsize = 50000000
recycle:exclude = *.tmp *.temp *.o *.obj ~$*
recycle:exclude_dir = sdileni/*/profile* tmp temp cache
recycle:versions = yes
recycle:touch = yes
recycle:keeptree = yes

Minta 4

vfs objects = recycle
recycle: repository = .recycle/%u
recycle: version = true
recycle: touch = true
recycle: keeptree = true
recycle: noversion = *.doc|*.xls|*.ppt
recycle: exclude = *.tmp *.temp *.cache
recycle: maxsize = 0

Minta 5

vfs objects = recycle
recycle:repository = /home/depts
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:exclude = *.tmp *.temp *.o *.obj ~$* *.~??
recycle:excludedir = /tmp /temp /cache

Iptables beállítások

iptables -A INPUT -p udp --dport 137 -j ACCEPT
iptables -A INPUT -p udp --dport 138 -j ACCEPT
iptables -A INPUT -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -p tcp --dport 445 -j ACCEPT

A 137 és a 138 port az nmbd démonhoz tartozik.

A 139 és a 445 port az smbd démonhoz tartozik.

SMB kliens Linux parancssorból

Telepítsük az smbclient programot:

apt-get install smbclient

smbclient -L localhost
smbclient //server/megosztas

A localhost helyett lehet IP cím. Ügyeljünk a második sorban a a / perjelekre, ne tévesszük össze a \ visszaperjellel.

Grafikus adminisztrációs felület GTK

Telepítés:

apt-get install gadmin-samba

Indítás például:

gksu /usr/sbin/gadmin-samba

Indítás például GNOME felületen:

Alkalmazások -> Rendszereszközök -> GADMIN-SAMBA

Webalapú adminisztrációs felület

Telepítés:

apt install swat

Függelék

IPC$ megosztás

Az IPC$ megosztás a TCP/IP kapcsolatok tallózásához szükséges. A Windowsok csak akkor fogják tudni tallózni a Linuxos samba gépet, ha van egy ilyen nevű mogosztás is.

Megosztás példák

[dokumentumok]
comment = Dokumentumok
path = /srv/smb/dokumentumok
browseable = yes
writeable = yes
public = yes
[zene]
comment = Zene
path = /srv/smb/zene
browseable = yes
writeable = yes
public = yes
[kepek]
comment = Kepek
path = /srv/smb/kepek
browseable = yes
writeable = yes
public = yes
[Videok]
comment = Videok
path = /srv/smb/vedeok
browseable = yes
writeable = yes
public = yes

smbtree

Az smbtree az smbclient csomag része.

Megjeleníti az elérhető megosztásokat:

WORKGROUP
\\PUSZTA	Samba 4.2.14-Debian
\\PUSZTA\IPC$	IPC Service (Samba 4.2.14-Debian)
\\PUSZTA\torony	Puszta publikus torony
\\PUSZTA\data	Puszta publikus írható megosztás
\\PUSZTA\pub	Puszta publikus megosztas
\\PUSZTA\print$	Printer Drivers

Irodalom

Linkek

http://www.samba.org

https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Standalone_Server (2019)

http://wiki.samba.org/index.php/Samba4/HOWTO

http://wiki.samba.org/index.php/Samba4/Debian

http://wiki.samba.org/index.php/Windows7

http://us6.samba.org/samba/docs/man/manpages-3/

http://us6.samba.org/samba/docs/man/manpages-3/vfs_recycle.8.html

http://hup.hu/old/sambakonyv/

http://szabilinux.hu

http://szabilinux.hu/samba/samba.zip

https://linuxconfig.org/how-to-configure-samba-server-share-on-debian-9-stretch-linux (2017)

https://wiki.samba.org/index.php/LDB (LDB, TDB; 2019)

https://linuxconfig.org/how-to-configure-samba-server-share-on-debian-9-stretch-linux (2019)

https://www.server-world.info/en/note?os=Debian_9&p=samba&f=2 (2019)

https://www.howtoforge.com/tutorial/debian-samba-server/ (2019)

https://forums.fedoraforum.org/showthread.php?180709-Where-is-smbpasswd-file (2019)

https://wiki.debian.org/SambaServerSimple (2019)

CIFS:

http://www.samba.org/cifs/

http://www.ubiqx.org/cifs/

AD menedzser Win7-től:

https://www.microsoft.com/hu-HU/download/details.aspx?id=7887 (W7)

https://www.microsoft.com/en-us/download/details.aspx?id=45520 (W10)