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

9 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