Maxovy poznamky k smb.conf

Kdysi me nekdo pozadal o tipy a triky k TO. Mam to stale rozdelane a jeste jsem to nikde nesdilel. Tady je draft verze casti pro Sambu. Je to takove jak jsem to psal v texteditoru. A jelikoz se tu mnozi dotazy k sambe, tak snad to nekomu helfne.

## Zdroje : Samba.org , Archlinux wiki, OpenWRT wiki

## Dulezite soubory 
## 1. /etc/config/samba                                                  ==> uci config
## 2. /etc/samba/smb.conf.template                                       ==> uci samba template 
## 3. /etc/samba/smb.conf -> /var/etc/smb.conf (resp. /tmp/etc/smb.conf) ==> fakticky config co je pouzit samba daemonem
## 4. /etc/samba/smbpasswd                                               ==> databaze hesel 
## 5. /var/log/log.smbd                                                  ==> samba log , byva prazdny pokud se loguje do syslogu
## 6. /var/log/log.nmbd                                                  ==> name-server log , byva prazdny pokud se loguje do syslogu

## Rychlonavod ....
## vytvorit uzivatele "samba_user" pomoci "useradd"/"adduser"
## pridelit mu unix heslo  pomoci "passwd"
## vytvorit/synchronizovat samba a unix heslo pomoci "smbpasswd"
## vytvorit na vsech klient stanicich stejny ucet a se stejnym (samba) heslem
## --> resp. neni nutne vytvaret pokud staci jen pripojeni jako sdileny disk 
## ==> ale je nutne zajistit prvotni zadani credentials a jejich zapamatovani pro kazdeho win-uzivatele
## --> v pripade, ze username(ci heslo) neni(nemuze byt) stejne, je potreba zajistit mapovani mezi unix a win svetem 
## nastavit pristupova prava nad slozkou co se ma/bude sdilet pro prislusneho uzivatele/skupinu (samba_user:users)
## pripadne zajistit, ze mount daneho filesystemu pristup do slozky zajisti (velky rozdil je-li to ext3/4 nebo ntfs ...
## --> ntfs se mountuje pres user-space nikoliv primo pripade ze ma byt zapisovatelny a to prinasi problemy (unix vs samba prava)
## --> je lepsi nasdilet slozku z jineho filesystemu/mountu a overit funkcnost samby na nem
## --> (do ktereho pak prislusny jakykoliv obsah pridame pres symlink, link, mount, bind, rbind )
## ==> pouzivani ntfs na TO je tak trosku zadelavani si na neustsale problemy

## /mnt/
drwxr-xr-x    4 samba_user  users         4096 May 14 20:46 MyShare          
drwxr-xr-x    4 samba_user  users         4096 May 14 20:46 MyData        

## /mnt/MyShare                                                                                       ## sdileny adresar
lrwxrwxrwx    1 root     root            33 Dec  8  2016 Torrents -> ../MyData/InBound/TorrentFiles/  ## symlink do slozky na jinem mountu (sledovana slozka pro torrenty)
lrwxrwxrwx    1 root     root            27 Dec  8  2016 Upload   -> ../MyData/InBound/Upload/        ## symlink do slozky na jinem mountu (upload slozka)  
lrwxrwxrwx    1 root     root            30 Dec  8  2016 Download -> ../MyData/OutBound/Download/     ## symlink do slozky na jinem mountu (download slozka)
drwxr-xr-x    5 samba_user  users      4096 Mar 31 16:11 Video

## /mnt/MyData/                                                            ## datovy adresar
drwxr-xr-x    5 samba_user  users         4096 Oct 31  2016 Torrent        ## hlavni slozka pro Transmission 
drwxr-xr-x    3 samba_user  users         4096 Oct 31  2016 InBound        ## hlavni slozka pro prichozi data (ftp,smb,torrent,irc)
drwxr-xr-x    2 root        root          4096 Dec  8  2016 Users          ## symlinky nebo bind mounty od useru/pro usery
drwxr-xr-x    3 samba_user  users         4096 Dec  8  2016 OutBound       ## hlavni slozka pro odchozi data 
drwxr-xr-x    7 root        root          4096 Dec  8  2016 vsFtpRoot      ## virtualni root/chroot slozka pro vsftpd
drwxr-xr-x    2 root        root          4096 Dec  9  2016 ngIrcdRoot     ## virtualni root/chroot slozka pro ngircd 

## /etc/config/samba 
config samba
        option name 'XXXXX'
        option workgroup 'XXXXXXX'      ## pouziti WORKGROUP prinasi mene problemu na W8/W10 stanicich
                                        ## Pozn: ale je lepe si definovat vlastni (viz komentar ve vlakne)
        option homes '0'                ## automaticke sdileni domovskych adresaru
                                        ## pozn: v zakladu bez dodatecnych nastaveni (pokud nema samba_user definovan home a shell) 
                                        ## je uzivatelum umozneno prislusny adresar opustit a v klidu si vylistovat cokoliv a kdekoliv 
                                        ## bez zapnutych wide linku a podobne, proste puvodni template, definovan jeden share ...
                                        ## tehda me to dost prekvapilo a obratem jsem tuhle moznost vypnul. 
        option description 'XXXXXXX'
config sambashare
        option name 'MyShare'           ## sitove jmeno slozky >> \\192.168.1.1\MyShare
        option path '/mnt/MyShare'      ## cesta ke slozce
        option read_only 'no'           ## jinak receno writeable=yes
        option guest_ok 'no'            ## zakazani pristupu pres quest 
        option users 'samba_user'       ## povoleni pristupu pro samba_user
        option dir_mask '0775'          ## maska z pohledu samby
        option create_mask '0664'       ## maska z pohledu unixu
                    
## ./tmp/etc/smb.conf                   ## toto je fakticky pouzity konfig, vytvoreny z uci configu a template casti.
[global]
        netbios name = XXXXXXXXX        ## nazev sitoveho zdroje v "netview" --> \\XXXXXXX\MyShare
        display charset = UTF-8 
        interfaces = 127.0.0.1/8 lo 192.168.1.1/24 br-lan ## na jakych intefejsech bude samba naslouchat
        server string = XXXXXXXXXXXXXX  ## popis serveru
        unix charset = UTF-8 
        workgroup = XXXXXXXXXXXXX       ## nazev skupiny, je dobre klienty pridat do prislusne skupiny
        browseable = yes                ## umoznuje zobrazovani sdilenych slozek v "netview"
        deadtime = 30                   ## session timeout
        local master=yes                ## chceme aby TO byl master
        domain master = yes             ## nechceme aby jiny Win stroj se pokousel ziskat status domain master (
                                        ## kdyz ma nekdo na svem laptopu vytvorenou homegroup s jinym jmenem nez ma turris muze to delat problemy v pripade ze win stroj se stane "master"
                                        ## a verte ze i v siti kde je AD/DC se muze nejake podradne PeCecko s Windows stat "masterem" a je zodpovedny za celkem dost veci 
        preferred master = yes          ## pro pripady kdy by Win stroj vyhral elekci, vynuceni ze TO bude master
        encrypt passwords = true        ## zapnute sifrovani hesel
        enable core files = no          ## nezobrazovat dump soubory "core"
        guest account = nobody          ## ucet pro hosta
        guest ok = yes                  ## povoleni pro hosta (lze pak zakazat pro jednotlive sdilene slozky)
        invalid users = root            ## zakazat pristup rootovi 
        load printers = no              ## bez tiskarny 
        map to guest = Bad User         ## uzivatele bez hesla budou brani jako hoste (user nobody)
        max protocol = SMB2             ## zakazani protokolu smb3,4, povoleni 1,2
      # mix protocol = SMB2             ## odkomentovani zpusobi vynuceni SMB2 , lze tak kombinaci min/max definovat range verzi 
        min receivefile size = 16384    ## velikost souboru, kdy jdou data primo ze socks do buffru, zrychluje zapis/cteni
        null passwords = no             ## zakazat prazdna hesla
        obey pam restrictions = yes     ## zapnout pokud je nastavneo encrypt-password=true
        os level = 20                   ## vyssi cislo vyhrava elekci na local master browser. 
                                        ## Teoreticky staci dat napr os level=65 a nemusi se vynucovat "master" nastaveni co je o kus vys 
        passdb backend = smbpasswd      ## utilitka na vytvoreni hesel --> dost dulezite kazdemu samba uzivateli udelat heslo :)
        printable = no                  ## ne-povoleni zapisu do spoolu
        security = user                 ## security level, user,share,domain 
                                        ## je-li level user ocekava se, ze uzivatele maji unix/samba ucet, overeni je globalni
                                        ## je-li level share , je to podobne jako u 'user' s tim rozdilem, ze se overuje pro kazdou sdilenou slozku
                                        ## je-li level domain , to nechces...., to je jen kdyz mas v siti AD/DC
        smb encrypt = disabled          ## nesifrovat
        smb passwd file = /etc/samba/smbpasswd      ## soubor se samba hesly spravovany pres smbpasswd utilitku
        socket options = TCP_NODELAY IPTOS_LOWDELAY ## nastaveni pro lokalni lan (zde lze nastavit buffer pro cteni a zapis)
        syslog = 2                       ## level logovani do syslogu
        use sendfile = yes               ## pro novejsi klienty kapanek zrychluje prenos souboru, pro starsi (win9x napr.) to muze zpusobovat problemy
        writeable = yes                  ## povolit zapis (lze zmenit pro kazdou sdilenou slozku)
        force user = samba_user          ## vynutit vlastnika nahranych souboru 
        force directory mode = 0775      ## vynuceni prav na adresare (lze zmenit pro kazdou sdilenou slozku)
        force create mode = 0664         ## vynuceni prav pro vytvorene slozky, soubory (lze zmenit pro kazdou sdilenou slozku)
                                         ## nasledujici neni uplne doporucovano pokud se linkuje mezi ruznymi mounty, pokud je to v ramci jednoho mountu, lze to pouzit
                                         ## pokud je prislusny mount pripojen pod stejnym uzivatelem pod kterym bezi samba nemelo by dojit, ze se nekdo dostane kam nema        
        allow insecure wide links = yes  ## povoleni vytvareni symlinku mimo prislusny share
        unix extensions = no             ## pokud jsou zapnute wide-links , vypnout 
        wide links = yes                 ## povolene nasledovani symlinku
                                         ## pro vyssi bezpecnost, lze tyto tri parametry vypnout(pouzit default hodnoty) 
                                         ## a namisto symlinku pouzit mount-bind/mount-rbind v pripade ze se sdileji data z ruznych zdroju.                                        
[MyShare]
        path = /mnt/MyShare              ## mount point pripojeny pod samba_user (pripadne pripojit normalne a jen zajistit, ze samba_user ma prislusna unix prava)
        valid users = samba_user         ## seznam uzivatelu, kteri mohou pristupovat ke slozce
        read only = no                   ## jinak receno "writeable=yes"  
                                         ## pozn: nastaveni write/read v ramci samby nema vliv na fakticka unixova prava slozek, souboru, ty maji vzdy posledni slovo.
        guest ok = no                    ## zakazat pristup pres hosta 
        create mask = 0664               ## vynuceni prav pro nove slozky a soubory (dedi se z global, ale neskodi nastavit pro kazdy share zvlast) (z pohledu unixu)
        directory mask = 0775            ## vynuceni prav pro adresare (z pohledu samby)
        
        ### toto nastaveni umoznuje pripojit sdilenou slozku jako sitovy disk pod univerzalnim uctem (osx tiger, win10, rpi3, ubuntu)
        ### je umozneno prochazeni a cteni ze vsech slozek a i linkovanych zdroju
        ### pomoci unix prav se da nasimulovat sdileni domovskych adresaru, staci vytvorit patricny symlink a dat mu prislusna prava/vlastnika na cilove slozce
smb.conf.template

[global]
netbios name = |NAME|
display charset = |CHARSET|
interfaces = |INTERFACES|
server string = |DESCRIPTION|
unix charset = |CHARSET|
workgroup = |WORKGROUP|
browseable = yes
deadtime = 30
local master=yes
domain master = yes
preferred master = yes
encrypt passwords = true
enable core files = no
guest account = nobody
guest ok = yes
invalid users = root
local master = yes
load printers = no
map to guest = Bad User
max protocol = SMB2
min receivefile size = 16384
null passwords = no
obey pam restrictions = yes
os level = 20
passdb backend = smbpasswd
preferred master = yes
printable = no
security = user
smb encrypt = disabled
smb passwd file = /etc/samba/smbpasswd
socket options = TCP_NODELAY IPTOS_LOWDELAY
syslog = 2
use sendfile = yes
writeable = yes
force user = samba_user
force directory mode = 0775
force create mode = 0664
allow insecure wide links = yes
unix extensions = no
wide links = yes

10 Likes

Nastaveni pro Win10 version 1709

ControlPanel>NetworkAndInternet>NetworkAndSharingCenter>AdvancedSharingSettings:
ujistit se, ze sitovy adapter pouzity pro pripojeni k siti je v danem profilu.

PRIVATE profile
NetworkDiscovery

  • NetworkDiscovery ON
  • Turn On Automatic setup of network connected devices

FileAndPrinterShareing

  • Turn On File and Printer Sharing

HomeGroupConnections

  • Allow Windows to manage homegroup connections (recommended)
    zde se da vse navazat na univerzalni ucet. Ovsem navazani na jeden ucet funguje i v "recommended"modu

Guest or Public profile (vse vypnuto)
All Networks profile (vse vypnuto)

ControlPanel>NetworkAndInternet>NetworkAndSharingCenter>HomeGroup
neni nutno nastavovat (pripojovat se do skupiny) -> pokud vse funguje s nastavenim TO na HomeGroup=WORKGROUP
pokud nefunguje pod defaultnim nastavenim kdy HomeGroup=WORKGROUP je potreba se pripojit do prislusne homegroup

Firewall

  • Overit pro profile “private network” ze jsou povoleny prislusne porty.
  • Melo by tam byt nekolik sad jiz pred-definovanych pravidel, staci jen povolit.
  • SMB1 >> UDP: 137,138 TCP:139,445
  • SMB2 >> UDP: TCP:445
  • Podle nastaveni TO (max protocol/min protocol parametry v smb.conf) overit, povolit to co je potreba :slight_smile:

HomeGroup, osobne mam vzdy svuj vlastni nazev skupiny. Clenove stejne skupiny maji vyssi prava nez neclenove anebo clenove jine skupiny. Problem je v zasade ten, ze drtiva vetsina uzivatelu necha WORKGROUP nazev vsude a v pripade, ze prijde nekdo s nejakym novym strojem a pripoji se do site, muze celkem zamichat s nastavneim. Prinejmensim ma urcitou moznost si jako “guest” prohlidnout sdilene slozky.
Na druhou stranu v jistem smyslu, je dobre z pocatku pri nastavovani a testovani nechat default “workgroup” nazev , zprovoznit a pak jej zmenit.
Nekteri si jiste pamatuji dobu, kdy u jisteho ISP bylo mozno se podivat na sdilene slozky jinych klientu/uzivatelu. To nebylo dobre … :slight_smile:

No tak na to si pamatuju velmi dobře, přišel jsem na to úplně náhodou při pokusech s look@lan a nestačil jsem se divit, jak je to snadné. Jediné dobré na tom bylo, že jsem si takhle mohl s kamarády u stejného ISP sdílet data a to dokonce bez FUP, ale při těch rychlostech šneka bylo tak jako tak rychlejší to fyzicky donést :smiley: .

For ENG speaking users translated version Maxmilian's notes on smb.conf

1 Like

Po upgrade z OS 3.x na OS 5.x přestal chodit NAS tvořený externím diskem připojeným k USB portu. Bohužel v /tmp/etc/ nebyl žádný soubor smb.conf, přičemž by měl být, jak píšete “vytvoreny z uci configu”. Pokoušel jsem se vytvořit jej podle Vašeho návodu, ale po restartu Turris Omnia byl tento soubor vymazán. V /mnt/nas přitom přitom přes WinSCP přimountovaný disk vidím.

1 Like

Narazil jsem na podobný problém, také se negeneroval soubor /tmp/etc/smb.conf. V mém případě došlo pravděpodobně během updatu k zakázání služby samba4. Stačilo v LuCI na kartě “Systém → Po spuštění → Initskripty” u položky samba4 změnit “Zakázáno” na “Zapnuto”.

1 Like

Díky za radu, skutečně to je ono. Shodou okolností jsem současně narazil na (TOS3 to TOS5 Upgrade on Omnia lost NAS), kde je to také zmíněno.
Teď jsem ale narazil na jiný problém. K NAS přistupuji z PC, kde je více účtů. Rozchodil jsem to na jednom a na druhém ani náhodou. Podle mne to souvisí s tím, že nemohu na ostatních účtech rozchodit SSL, které jsem na tom jednom účtu rozchodil (viz Problem with SSL - how to instal/register Turris certificate). Z toho druhého účtu to stále hlásí, že je certifikát nedůvěryhodný. Snažil jsem se jej ho naimportovat i da dalšího účtu - nic. Jsem z toho jelen a nevím kam se podívat.

Tak problém se SSL na ostatních účtech vyřešen: Importoval jsem špatný certifikát. Z účtu, kde to funguje jsem vyexprotoval nadřazený certifikát (byl tam jen u původního účtu a u ostatních chyběl) a ten jsem naimporoval pod adminem na celý počítač do složky “Důvěryhodné kořenové …”.

A dále bylo třeba se připojit ke správnému zdroji:

V souboru /etc/config/samba jsem měl toto nastavení
config sambashare
option name ‘WD-NAS’
option path '/mnt/nas

A v souboru /tmp/etc/smb.conf

[WD-NAS]
path = /mnt/nas

Při připojování z ostatních účtů jsem měl uvedeno chybně \\192.168.1.1\nas.
Mělo být správně \\192.168.1.1\wd-nas. Vyřešeno.

Generovany config se nemusi vytvorit, pokud je v samotnem UCI souboru nejaka chyba (ci konflikt v nastaveni). Muj navod jsem delal jeste pro sambu ve verzi 3.x , takze 4.x nemusi nutne nektere veci brat.(pripadne se muze/mohl zmenit zapis nejakeho nastaveni, tim myslim, ze v UCI nemusi zapis direktiv a hodnot odpovidat 1:1 tak jak je to pouzito v smb.conf ci v predchozi verzi TOS dane verzi samby, to je pak dobre si overit na OpenWRT wiki a na Samba wiki.

Rucne vytvorene configy v /tmp po restartu vzdycky zmizi. Jedine misto, kde se da neco nastavit pro sambu je /etc/config/samba.conf. Start/stop (disable/enable) samby by mel ten config znovu vygenerovat (pokud je vse v poradku z pohledu syntaxe a tak).

ad_ssl: s certifikaty jsem vubec nic neresil. Ale to bude asi tim, ze nemam premigrovano na TOS 5.x , resp. na samba4 … :smiley: , az premigruju dodam nejakej update k tem mejm poznamkam.

Sice to byl porod, ale díky i Vašemu návodu jsem to nakonec i při svých slabých znalostech zvládl. Co se týče chodu NAS, tak přechod na TOS 5.x má jeden pozitivní a pro mě dost důležitý důsledek: Přenos dat je stabilní s vysokou propustností (doufám, že to časen nezdegraduje). Už se těším na další pokračování.

Tak co se tyce Samba4 (v mem pripade):

  • smaznout /etc/config/samba config a nechat jen /etc/config/samba4
  • vymazat display charset = 'UTF-8' v /etc/config/samba4 a display charset = |CHARSET| v /etc/samba/smb.conf.template
  • ponechat option charset 'UTF-8' v /etc/config/samba4) a unix charset = |CHARSET| v /etc/samba/smb.conf.template
  • zakazat sluzbu “samba” a povolit “samba4” , /etc/init.d/samba disable (velmi pravdepodobne uz bude pryc, ale jistota je jistota) /etc/init.d/samba4 enable

Po migraci z TOS3 na TOS5, je k dispozici fix balicek ( fix-samba-migrate-to-samba4 - 1-1 ) co by mel vyse uvedene vlastne udelat sam (az tedy na ten “charset” to mi tam s podivem zustalo.

Dalsi zmenu co me potesila, byly lepsi hlasky od smbd v syslogu (nejvic me potesilo, ze vidim ted i elekci na mastera). Moznost vypnuti nmbd (netbiosu) option disable_netbios '1' taky potesilo.

Jelikoz mam v siti starsi “Maliny” ktere neumeji vyssi dialekt samba protokolu, nemenil jsem min/max protocol (zustavam stale na SMB2). Docela by me zajimal rozdil v pouziti “3” te nejvyssi revize (jako z pohledu sitoveho provozu, ted to lita 50-300M podle toho je-li to pres 2,4 a nebo 5tkovou wifinu ci po siti).