Samba je pohodová, stabilní, je možné s ní dělat všelijaké kousky. Každý si na ni relativně rychle zvykne a oblíbí si ji pro její jednoduchost a přehlednost, tedy alespoň v případě, že se v ní nesnaží zbytečně rozjíždět dvacet let staré aplikace s DOSovými atributy v síťovém prostředí Windows 7. Občas se tak někdo ptal, proč vlastně používám v Linux-Mac prostředí pro sdílení právě Sambu, tedy nástroj pro realizaci úplně jiného druhu heterogenní sítě. Odpovědí jsou její rychlé možnosti.
Spoustu lidí uvažuje podobně - není jejich cílem dělat brutálně rychlé přenosy velkých objemů dat, ale nějakým způsobem řídit třeba týmové projekty napříč různými platformami, nebo prostě jen zajistit, aby se soubory za všech okolností chovaly stejně - velmi krásným příkladem může být vývojový webserver, typicky Apache v Debianu deafultně fungující pod skupinou www-data, přičemž chceme, aby do vývojového prosžedí mohl jen někdo a zároveň aby si i webserver sám mohl matlat co potřebuje. Taková jednoduchá konfigurace využívá především force user a force group.
[www-devel]
comment = www-devel
path = /var/www/devel
public = No
force user = eida
force group = www-data
create mask = 0660
directory mask = 0770
hide dot files = No
Není nejmenší problém pod jedním účtem pracovat z několika různých strojů na jakoukoliv vzdálenost. Poslední týdny jsou ale příšerným důkazem toho, jak marketing dovede zmršit jakoukoliv technologii. Nejdřív to vypadalo, že Apple prostě jen zavede podporu SMB2 a lidi ve windowsí síti budou trochu šťastnější, jenže se stalo cosi jiného. Od posledních úprav naprosto strašným způsobem bogusuje i SMB klient v OS X, kdy špatně čte velikosti souborů, jejichž kopírování často končí pitomou chybou -8084 a nakopírovaný soubor si do sebe v lepším případě natáhne jen pár desítek náhodných znaků. Následuje happy debugging javascriptu.
Protože toto je už docela mission-critical, bylo potřeba s tím konečně něco dělat. Všechna popsaná řešení (či jen dočasná workarounds) - od specifikace protokolu SMB1 v nsmb.conf a připojování pomocí ručně vypsaného CIFS protokolu až po drsné přepnutí Samby do max protocol = NT1 - nefungují a jsou úplně k ničemu (přestože podle smbutil statshares -a všechno skutečně jede na SMB1). Musí tedy existovat jiný způsob…
Hlad je nejlepší kuchař - nezdá se. Už před lety mi divoký Jéža říkal cosi o ACL jako jedinému dalšímu možnému prostředku pro nakázání přístupových oprávnění. Asi mi to nejdřív přišlo hrozně složité a děsivé, ale vlastně to funguje jen takhle trapně jednoduše i na existující projekt:
# setfacl -R -m u:eida:rwX,g:www-data:rwX,o:--- projekt
Podmínkou je pochopitelně mít na disku zapnuté ACL a nainstalovaný balíček acl pro manipulaci. Pak už je možné se přihlásit pod čímkoliv čistě UNIXovým - AFP, NFS, SSH - všechno se bude chovat podobně, jako kdyby Samba ukládala oprávnění přímo.