Portál AbcLinuxu, 3. května 2025 22:54

Triky se Sambou - odpadkový koš

1. 7. 2003 | Jiří Bajer
Články - Triky se Sambou - odpadkový koš  

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!

samba 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...

Co budeme potřebovat

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.

Konfigurace

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.

Nastavení práv

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č?

Vysypávání košů

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í.

Problémy

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.

Závěr

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á.

Související články

Samba - Linux jako server v sítích s Windows

Odkazy a zdroje

Samba
Samba-HOWTO-Collection

Další články z této rubriky

Praktický test komprese ZPAQ v programu lrzip
Porovnávání souborů PDF
Microsoft rozdává zadarmo stovky e-knih
Minimalistické prezentace s Markdown
Kde hledat Creative Commons a alternativy

Diskuse k tomuto článku

1.7.2003 17:36 Jiri Bajer | skóre: 34 | blog: Sarimuv koutek | Praha
Rozbalit Rozbalit vše Doplneni k samba-vscan
Odpovědět | Sbalit | Link | Blokovat | Admin
Jak jsem pred chvili zjistil, tak pokud pouzivate SuSE, pak mate k dispozici predkompilovany balicek samba-vscan. Jelikoz se ale v konferencich Samby vedou diskuse o kompletnim prepsani tohoto modulu (a ve vetvi HEAD se tak jiz deje), jeste asi chvilku potrva, nez se s nim potkame na kazdem druhem sambovskem fileserveru.
12.12.2021 11:24 geebranz
Rozbalit Rozbalit vše Re: Doplneni k samba-vscan
1.7.2003 21:34 hanz
Rozbalit Rozbalit vše super clanek
Odpovědět | Sbalit | Link | Blokovat | Admin
Super clanek,dik za nej!!! napiste toho o sambe co nejvice.
2.7.2003 12:35 bln
Rozbalit Rozbalit vše Nastavovani prav
Odpovědět | Sbalit | Link | Blokovat | Admin
Me by zajimalo neco o tom nastavovani prav, na urcita doporuceni pouzivam sambu-tng, ale stejne nevim jak udelat, abych mohl nastavovat ruznym uzivatelum ruzna prava. Vim ze v unix like systemech je vlastnik, skupina, ostatni, ale to se mi pro sambu zda priliz omezujici. Toto je problem pouze souboru na unixu, na pocitacich win, pripojenych do domeny to funguje bez problemu...
2.7.2003 14:51 Jiri Bajer | skóre: 34 | blog: Sarimuv koutek | Praha
Rozbalit Rozbalit vše Nastavovani prav
> jak udelat, abych mohl nastavovat ruznym uzivatelum ruzna prava Data, ktera se exportuji pres Sambu sidli na normalnim Linuxovem filesystemu. Cili funguje chown, chgrp, chmod, attr. Prava read a write jsou interpretovany stejne, na executable bity jsou mapovany DOSovske atributy (hidden, system, archive). Uzivatelum Samby lze v /etc/group pridelit clenstvi v dalsich skupinach a prava pridelovat na zaklade clenstvi ve skupine (potom pozor na create mask v smb.conf). Pomoct muze i suid/sticky bit na nadrazenem adresari. Pak jeste existuje nt acl support, ale z Win 9x to asi nepouzijes. (BTW: nevi nekdo o nastroji pro Win 9x, ktery by umel menit NT prava?) Ty problemy, ktere jsem nadhodil v uvodu k clanku maji vyvolat diskusi o tom, jak to delat lepe a radostneji - ne vsechno mam uspokojive vyresene...
7.7.2003 13:15 Tomáš Valenta
Rozbalit Rozbalit vše Nastavovani prav
Pokud chcete používat nastavování práv jako na Windows serveru, použijte na Linuxu file system, který podporuje acl. Mám to vyzkoušené na Ext3 a funguje to perfektně. Tuším, že funguje také Xfs.
2.7.2003 14:40 Jiri Bajer | skóre: 34 | blog: Sarimuv koutek | Praha
Rozbalit Rozbalit vše Radostna novinka
Odpovědět | Sbalit | Link | Blokovat | Admin
Tak dneska vysla druha beta Samby 3.0. Finalni verze se uz blizi...
2.7.2003 19:02 truhlik | skóre: 10
Rozbalit Rozbalit vše super!
Odpovědět | Sbalit | Link | Blokovat | Admin
vdaka sa super clanok! tiez by som prijal viac clankov co sa tyka samby.
geon avatar 20.9.2007 12:09 geon | skóre: 18 | blog: bavaria
Rozbalit Rozbalit vše Oprava?
Odpovědět | Sbalit | Link | Blokovat | Admin
Nastavení, jak je popsáno v článku, již (nebo alespon mně) nefunguje. Místo
vfs object = /usr/lib/samba/vfs/recycle.so
vfs options = /etc/samba/recycle.conf
je třeba napsat jen:
  vfs objects = recycle:recycle

Moc 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
geon avatar 1.10.2007 14:55 geon | skóre: 18 | blog: bavaria
Rozbalit Rozbalit vše Re: Oprava?
Dále již více nefunguje
exclude = *.tmp|*.temp|*.obj|~$*|*.pgp|*.asc|*.pkr|*.skr|*.[Ll]og
Je třeba "|" nahradit za mezeru nebo čárku.
7.3.2014 00:31 B.E.
Rozbalit Rozbalit vše Re: Triky se Sambou - odpadkový koš
Odpovědět | Sbalit | Link | Blokovat | Admin
I po tolika letech jsem pri hledani na googlu nasel odkaz sem, cos me nakoplo spravnym smerem!

Potvrzuji ze navod uz neni asi 100% funkcni a potrebuje trochu upravit, ale ve zkratce:
doinstalovat v debianu samba-vfs-modules a pak postaci:
zkusit expamples v dokumentaci.

Akorat jsem si dodal do nazvu adresare %U a %I abych vedel, kterej "..." (BFU) mi promazal sdilenej disk :-/

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.