home       inleiding       sysadmin       services       links       bash       werk       nothing      

samba server (inleiding)

Een samba server gebruikt het SMB (server message block) protocol (soms ook CIFS genoemd) om file- en printer-shares aan te maken.
 
wikipedia: https://en.wikipedia.org/wiki/Server_Message_Block
 

  1. installatie
     
    Het packet samba bevat de samba-server. Je kan deze installeren met:
     
    $ sudo apt-get install samba
     
    tijdens de installatie worden een dertigtal pakketten geinstalleerd, o.a.: samba samba-common samba-common-bin samba-dsdb-modules samba-libs samba-vfs-modules
     
  2. minimale configuratie
     
    Tijdens de installatie wordt een standaard config-file
    /etc/samba/smb.conf
    neergezet, met enkele veelgebruikte opties. Om samba te leren is het echter beter te beginnen met de allereenvoudigste configuratie:
     
    Sla de default config op en begin een nieuwe configuratie:
     
    $ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.example
     
    $ sudo nano /etc/samba/smb.conf
    [global]
    workgroup=lokaal800
     
    [brussel]
    path=/home/ketje
    comment=eerste share met samba

    In [global] plaatsen we de algemene-configuratie,
    Elke share begint met een share-name tussen vierkante haken, in ons voorbeeld [brussel]
     

  3. de geshare-de directory
     
    • Maak met sudo de directory /home/ketje aan.
      $ sudo mkdir /home/ketje
       
    • Verifieer dat iedereen leesrechten of iedereen er leesrechten op heeft.
      $ ls -l /home
      drwxr-xr-x 2 root root 20480 jun  9 22:05 ketje
      drwxr-xr-x 3 user user  4096 jun  9 21:40 user
    • Zet er iets in ...
      dat kan bvb met onderstaande find ...
      $ cd /home/ketje
      $ sudo find /usr/share -iname *doc -exec cp -v {} . \;
      '/usr/share/bash-completion/completions/pydoc' -> './pydoc'
      '/usr/share/bash-completion/completions/asciidoc' -> './asciidoc'
      '/usr/share/bash-completion/completions/perldoc' -> './perldoc'
      ...
      cp: omitting directory '/usr/share/vim/vim74/doc'
      cp: omitting directory '/usr/share/groff/1.22.3/tmac/mdoc'

       

  4. test de configuratie
     
    $ testparm
    Load smb config files from /etc/samba/smb.conf
    rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
    Processing section "[brussel]"
    Loaded services file OK.
    Server role: ROLE_STANDALONE
     
    Press enter to see a dump of your service definitions <enter>
     
    # Global parameters
    [global]
    workgroup = LOKAAL800
    idmap config * : backend = tdb
     
    [brussel]
    path = /home/ketje

     

  5. gebruikers
     
    We kunnen niet verder testen zonder samba-gebruikers, een samba-gebruiker bestaat zowel als linux-gebruiker, en als samba-gebruiker:
     
    $ sudo useradd jan
    $ sudo smbpasswd -a jan
    New SMB password: sdf12345
    Retype new SMB password: sdf12345
    Added user jan.
     
  6. alle smbusers opvragen
     
    $ sudo pdbedit -L -v
    -L to list users.
    -v to be verbose.
     
  7. lokaal testen op de server met smbclient
     
    $ sudo apt install smbclient
     
    $ smbclient -L localhost -U jan
    Enter jan's password:
    Domain=[LOKAAL800] OS=[Windows 6.1] Server=[Samba 4.3.11-Ubuntu]
     
    Sharename       Type      Comment
    ---------       ----      -------
    brussel         Disk      
    IPC$            IPC       IPC Service (Samba 4.3.11-Ubuntu)
    Domain=[LOKAAL800] OS=[Windows 6.1] Server=[Samba 4.3.11-Ubuntu]
     
    Server               Comment
    ---------            -------
     
    Workgroup            Master
    ---------            -------
    SOLAR2001            LX11
    WORKGROUP            UBU16-SRV-01

     
    $ smbclient //localhost/brussel -U jan
    Enter jan's password:
     
    Domain=[LOKAAL800] OS=[Windows 6.1] Server=[Samba 4.3.11-Ubuntu]
     
    smb: \> ls

    .                         D        0  Fri Jun  9 22:05:54 2017
    ..                        D        0  Fri Jun  9 21:40:25 2017
    pydoc                     N      986  Fri Jun  9 22:05:54 2017
    asciidoc                  N     1179  Fri Jun  9 22:05:54 2017
    manpage.example.mdoc      N     3811  Fri Jun  9 22:05:54 2017
    perldoc                   N     3569  Fri Jun  9 22:05:54 2017
    puppetdoc                 N     9792  Fri Jun  9 22:05:54 2017
    munindoc                  N      335  Fri Jun  9 22:05:54 2017
    javadoc                   N     8288  Fri Jun  9 22:05:54 2017
           15865808 blocks of size 1024. 12395384 blocks available

    smb: \> exit
     

  8. testen vanaf de windows command line
     
    C:\> NET USE L: \\172.16.31.123\brussel /USER:jan
    The password or user name is invalid for \\172.16.31.123\brussel.
    Enter the password for 'jan' to connect to '172.16.31.123': sdf12345
    The command completed successfully.
     
    C:\> L:
     
    L:\> dir
    Volume in drive L is brussel
    Volume Serial Number is 09BE-125A
    Directory of L:\
    09/06/2017  01:23    <DIR>          .
    09/06/2017  01:22    <DIR>          ..
    09/06/2017  01:23           9.792 puppetdoc
    09/06/2017  01:23           8.6288 javadoc
               8 File(s)      1.654.652 bytes

     

  9. meer ...
     
    • Om te kunnen schrijven op je share voeg je het volgende toe in de /etc/samba/smb.conf onderaan je share declaratie:
       
      writable=yes
       
    • Je kan ook alle homedirectories van je sambaserver sharen door de volgende declaraties toe te voegen:
       
      [homes]
      writable=yes

       
      na beide aanpassingen ziet smb.conf er dan uit als volgt:

      [global]
      workgroup=lokaal800
       
      [brussel]
      path=/home/ketje
      comment=kommentaar
      writable=yes
       
      [homes]
      writable=yes

       

  10. version
     
    $ samba --version
    Version 4.3.11-Ubuntu
     
  11. documentatie:
     
    https://www.samba.org/samba/docs/
     
  12. samba service beheer
     
    samba bestaat uit twee daemons: smbd en nmbd.
     
    In de man-pagina's staat het volgende:
    smbd - server to provide SMB/CIFS services to clients
    nmbd - NetBIOS name server to provide NetBIOS over IP naming services to clients
     
    smbd zorgt dus voor de share, nmbd voor de vertaling van netbiosnames naar IP en omgekeerd.
     
    Zoals de meeste services in ubuntu16 wordt hier ook gebruik gemaakt van systemd om de daemons te beheren:
     
    $ sudo systemctl status smbd
    ● smbd.service - LSB: start Samba SMB/CIFS daemon (smbd)
    Loaded: loaded (/etc/init.d/smbd; bad; vendor preset: enabled)
    Active: active (running) since za 2017-06-10 13:27:08 CEST; 40min ago
     Docs: man:systemd-sysv-generator(8)
    Process: 1474 ExecReload=/etc/init.d/smbd reload (code=exited, status=0/SUCCESS)
    Process: 886 ExecStart=/etc/init.d/smbd start (code=exited, status=0/SUCCESS)
    Tasks: 3
    Memory: 38.0M
      CPU: 214ms
    CGroup: /system.slice/smbd.service
           ├─ 954 /usr/sbin/smbd -D
           ├─ 992 /usr/sbin/smbd -D
           └─1114 /usr/sbin/smbd -D
     
    jun 10 13:27:04 ubu16-01 systemd[1]: Starting LSB: start Samba SMB/CIFS daemon (smbd)...
    jun 10 13:27:08 ubu16-01 smbd[886]:  * Starting SMB/CIFS daemon smbd
    jun 10 13:27:08 ubu16-01 smbd[886]:    ...done.
    jun 10 13:27:08 ubu16-01 systemd[1]: Started LSB: start Samba SMB/CIFS daemon (smbd).
    jun 10 13:27:10 ubu16-01 smbd[954]: [2017/06/10 13:27:10.675744,  0] ../lib/util/become_daemon.c:124(daemon_ready)
    jun 10 13:27:10 ubu16-01 smbd[954]:   STATUS=daemon 'smbd' finished starting up and ready to serve connections
    jun 10 13:50:59 ubu16-01 systemd[1]: Reloading LSB: start Samba SMB/CIFS daemon (smbd).
    jun 10 13:50:59 ubu16-01 smbd[1474]:  * Reloading /etc/samba/smb.conf smbd
    jun 10 13:50:59 ubu16-01 smbd[1474]:    ...done.
    jun 10 13:50:59 ubu16-01 systemd[1]: Reloaded LSB: start Samba SMB/CIFS daemon (smbd).

    $ sudo systemctl status nmbd

    ● nmbd.service - LSB: start Samba NetBIOS nameserver (nmbd)
    Loaded: loaded (/etc/init.d/nmbd; bad; vendor preset: enabled)
    Active: active (running) since za 2017-06-10 13:27:11 CEST; 43min ago
     Docs: man:systemd-sysv-generator(8)
    Process: 1129 ExecStart=/etc/init.d/nmbd start (code=exited, status=0/SUCCESS)
    Tasks: 1
    Memory: 2.1M
      CPU: 163ms
    CGroup: /system.slice/nmbd.service
           └─1232 /usr/sbin/nmbd -D
     
    jun 10 13:27:11 ubu16-01 nmbd[1129]:    ...done.
    jun 10 13:27:11 ubu16-01 systemd[1]: Started LSB: start Samba NetBIOS nameserver (nmbd).
    jun 10 13:27:11 ubu16-01 nmbd[1232]: [2017/06/10 13:27:11.222804,  0] ../lib/util/become_daemon.c:124(daemon_ready)
    jun 10 13:27:11 ubu16-01 nmbd[1232]:   STATUS=daemon 'nmbd' finished starting up and ready to serve connections
    jun 10 13:27:34 ubu16-01 nmbd[1232]: [2017/06/10 13:27:34.286076,  0] ../source3/nmbd/nmbd_become_lmb.c:397(become_local_master_stage2)
    jun 10 13:27:34 ubu16-01 nmbd[1232]:   *****
    jun 10 13:27:34 ubu16-01 nmbd[1232]:   
    jun 10 13:27:34 ubu16-01 nmbd[1232]:   Samba name server UBU16-SRV-01 is now a local master browser for workgroup LOKAAL800 on subnet 192.168.5.240
    jun 10 13:27:34 ubu16-01 nmbd[1232]:   
    jun 10 13:27:34 ubu16-01 nmbd[1232]:   *****

     
    De standaard systemctl functies:
    status, start, stop, restart, reload, enable, disable
    zijn beschikbaar.