Portál AbcLinuxu, 3. května 2025 22:54
Používáte Sambu a vašim uživatelům se stýská po odpadkovém koši z Windows? Tak jim ho dopřejte!
Když se rozhodnete nahradit dosluhující NT4 fileserver Sambou, stačí si vzít k ruce dokumentaci a
za chvilku vám sdílení souborů funguje. Časem ale zjistíte, že tu a tam
chybí nějaká drobná vlastnost, která na NT fungovala a na Sambě ne. Mezi
nejpalčivější problémy patří zejména pohodlné nastavování práv z pracovních
stanic, ukládání hesel na jednom místě a jejich snadná změna, český tisk z
DOSového účetnictví a mezi uživateli Windows tak oblíbený odpadkový koš.
Většina těchto nedostatků je dávno vyřešena, ale vzhledem k tomu, že
dokumentace Samby má nutně zpoždění za vývojem, dozvíte se o tom až po
zdlouhavém prohledávání internetu.
Uživatelé Windows jsou zvyklí, že si nemusí dávat pozor, co ze svými či cizími daty provádí. Co chvíli se na ně z obrazovky šklebí dialogové okno, které po nich chce kliknout na OK, takže v rámci klikání si občas umáznou nějaký ten soubor. Nic se neděje, od čeho tu máme odpadkový koš. Ale ouha ono to na síťových discích nefunguje...
V kap.21
Samba-HOWTO-Collection pro HEAD/3.0 můžete objevit zmínku o VFS a modulu recycle od Stefana Metzmachera, který tento problém řeší. Nedočtete se tam ale, že VFS recycle byl backportován i do verze 2.2.4 a novějších (vyzkoušeno ve verzi 2.2.5a na RedHat 8.0). Jelikož dokumentace je velmi stručná, projdeme si zprovoznění odpadkového koše krok za krokem. Předpokládám, že Sambu máte již nainstalovanou, nakonfigurovanou a funkční. Na RedHatu, Mandrake a SuSE nebude potřeba nic kompilovat, protože od verze 2.2.7a je podpora odpadkového koše již zahrnuta (viz samba-common (RH), samba-server (MDK), ev. samba (SuSE), sekce provides: recycle.so
). V Debian stable/testing je verze 2.2.3a, která VFS recycle nepodporuje, takže budete potřebovat buď 3.0-beta1 z unstable, nebo neoficiální 2.2.8a. Jelikož verze starší, než 2.2.8a obsahují závažné bezpečnostní chyby [.txt], doporučuji použít nejnovější stabilní verzi [.tar.gz]. Pokud předkompilovaný balíček obsahuje soubor /usr/lib/samba/vfs/recycle.so
, pak podporuje VFS recycle.
Povolení VFS recycle je snadné, stačí ke každému share, který má používat odpadkový koš, doplnit nasledující dva řádky:
/etc/samba/smb.conf
vfs object = /usr/lib/samba/vfs/recycle.so
vfs options = /etc/samba/recycle.conf
Odpadkový koš má smysl zavádět zejména u homes a public.
Nastavíme, aby se smazané soubory přesouvaly do adresáře .recycle v kořeni každého share:
/etc/samba/recycle.conf
name = .recycle/%U
mode = KEEP_DIRECTORIES|TOUCH
maxsize = 0
exclude = *.tmp|*.temp|*.obj|~$*|*.pgp|*.asc|*.pkr|*.skr|*.[Ll]og
excludedir = tmp|temp|chache|profile|PGP|/proc|/lost+found
poznámky:
Aktualizujeme konfiguraci Samby (kill -HUP `pidof smbd`
nebo service samba reload
) a soubory v příslušných shares se
odteď budou místo mazání přesouvat do .recycle/username
.
Jelikož odpadkové koše mohou obsahovat citlivá data, je výhodné pro
údržbu smazaných data zavést skupinu recycle_admin. Adresáře
.recycle/username
se sice vytvářejí automaticky, ale nastavení
práv provedeme raději skriptem:
mkdir .recycle
chmod 750 .recycle
chown root:samba_users .recycle
USERS="user1 user2 user3"
cd .recycle
mkdir $USERS
chmod 770 $USERS
chgrp recycle_admin $USERS
for i in $USERS; do
chown $i $i
done
cd ..
Mnou použitý způsob uskladňování smazaných dat je výhodný díky struktuře (vím, kdo smazal soubor a odkud), ale smazaná data jsou na několika místech a v zanořených adresářích. Alternativám se meze nekladou a jelikož každý share může mít vlastní konfigurační soubor, není problém např. vytvořit jediný koš pro všechny uživatele a povolit obnovu dat přidělením členství ve skupině recycle_admin. Jakou konfiguraci používáte vy a proč?
Pokud na koše nezavedete kvóty (nevalná stabilita v minulosti může někoho odrazovat), budou se odpadkové koše vesele plnit, dokud odpadky nezaneřádí celý datový disk. Vynášení odpadků nepatří mezi oblíbené činnosti a nutit k tomu své kolegy v praci není příliš populární. Na těžkou práci máme stroje, takže použijeme cronjob:
for i in `ls /mnt/samba/homes`; do
if [ -d /mnt/samba/homes/$i/.recycle ]; then
cd /mnt/samba/homes/$i/.recycle
find . -type f -atime +14 -print0 | xargs -0 --no-run-if-empty rm
find . -type d -atime +14 -print0 | xargs -0 --no-run-if-empty rmdir
--ignore-fail-on-non-empty
fi
done
Pro průběžnou kontrolu obsazeného místa použijeme např.:
for i in `ls /mnt/samba/homes`; do
du -h /mnt/samba/homes/$i/.recycle | tail -n 1
done
Pokud se vám v logu množí hlášky
[2003/01/01 01:00:00, 0] recycle/recycle.c:recycle_touch(424)
Touching .recycle/user1/app/file.ext failed, reason = Operation not permitted
znamená to, že někdo smazal soubor, k němuž neměl práva [https] na zápis, ale měl právo na zápis do adresáře (což nastává často u share public).
Aby zbytečně nerostla velikost záloh, je vhodné upravit konfiguraci
zálohovacího systému tak, aby ignoroval adresář .recycle
.
Např. u mého oblíbeného hdup stačí přidat do
sekce [global]
řádek:
exclude = lost+found, /proc, .recycle
Přestože odpadkové koše by měly pokrýt velkou část nechtěně smazaných souborů, je velmi vhodné denně zálohovat všechny modifikované soubory, aby bylo možné obnovovat ke konkrétnímu datu. Jakmile uživatel soubor nesmaže, ale přepíše, je nám odpadkový koš k ničemu a oceníme výhodu denního zálohování.
Pokud se něco nedaří, zkontrolujte logy ve
/var/log/samba/XYZ.log
, konfigurační soubor Samby pomocí
testparm
, konfigurační soubor odpadkového koše (vzorová ukázka
je v /usr/share/doc/samba/examples
) a hlavně práva k
souborům/nadřazeným adresářům. Pro detailnější ladění zvyšte loglevel
Samby, ale nezapomeňte ho po skončení vrátit, protože výrazně olivňuje
výkon Samby (desitky %).
Dokumentace k VFS recycle je jako šafránu, a proto se budete muset
spokojit s ukázkou v /usr/share/doc
a hledáním pres Google.
Manuálová stránka zatím neexistuje; pouze v již zmíněné
Samba-HOWTO-Collection pro řadu 3.0 lze najít základní informace. Stabilita
modulu VFS recycle je dle mých zkušeností dobrá, takže by vás neměly čekat
žádné závažnější problémy.
Pokud vás VFS v Sambě zaujalo, pak vás možná budou zajímat i další moduly - zatím vím o audit pro logování přístupu k citlivým datům a samba-vscan pro spojení s on-access antivirem, např. Clamav. Bohužel budou však k dispozici až v Sambě 3.0, která je zatím ve stádiu beta testů, a tedy na produkční stroje nevhodná.
vfs object = /usr/lib/samba/vfs/recycle.so vfs options = /etc/samba/recycle.confje třeba napsat jen:
vfs objects = recycle:recycleMoc jsem to nezkoumal, ale podle nastavení z článku mi to házelo chybu:
Unknown parameter encountered: "vfs options" Ignoring unknown parameter "vfs options"Řešení jsem nalezl na http://groups.google.com/group/linux.samba/browse_thread/thread/efb4bc8f06e07671/80bcf747dbe65742?lnk=gst&q=Unknown+parameter+encountered%3A+%22vfs+options%22&rnum=3#80bcf747dbe65742
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.