Skip to content

Instantly share code, notes, and snippets.

@JuanCrg90
Created January 20, 2019 21:56
Show Gist options
  • Select an option

  • Save JuanCrg90/2091fed1277dc4314dd7c7c94f5e9dc7 to your computer and use it in GitHub Desktop.

Select an option

Save JuanCrg90/2091fed1277dc4314dd7c7c94f5e9dc7 to your computer and use it in GitHub Desktop.

Revisions

  1. JuanCrg90 created this gist Jan 20, 2019.
    20 changes: 20 additions & 0 deletions setup.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,20 @@
    # https://howtoraspberrypi.com/create-a-nas-with-your-raspberry-pi-and-samba/
    sudo apt update
    sudo apt upgrade

    sudo mkdir -p /home/shares/public
    sudo chown -R root:users /home/shares/public
    sudo chmod -R ug=rwx,o=rx /home/shares/public


    sudo apt install -y samba samba-common-bin

    sudo cp ./smb.conf /etc/samba/smb.conf

    sudo /etc/init.d/samba restart

    sudo smbpasswd -a pi

    sudo fdisk -l /dev/sda

    # TODO Create a interactive menu for preparing the disks
    152 changes: 152 additions & 0 deletions smb.conf
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,152 @@
    # This is the main Samba configuration file. You should read the
    # smb.conf(5) manual page in order to understand the options listed
    # here. Samba has a huge number of configurable options most of which
    # are not shown in this file
    #
    # NOTE: Whenever you modify this file you should run the command
    # "testparm" to check that you have not made any basic syntactic
    # errors.

    #======================= Global Settings =======================

    [global]

    ## Browsing/Identification ###

    # Change this to the workgroup/NT-domain name your Samba server will part of
    workgroup = WORKGROUP

    # This will prevent nmbd to search for NetBIOS names through DNS.
    dns proxy = no

    #### Networking ####

    # The specific set of interfaces / networks to bind to
    # This can be either the interface name or an IP address/netmask;
    # interface names are normally preferred
    ; interfaces = 127.0.0.0/8 eth0

    # Only bind to the named interfaces and/or networks; you must use the
    # 'interfaces' option above to use this.
    # It is recommended that you enable this feature if your Samba machine is
    # not protected by a firewall or is a firewall itself. However, this
    # option cannot handle dynamic or non-broadcast interfaces correctly.
    ; bind interfaces only = yes

    #### Debugging/Accounting ####

    # This tells Samba to use a separate log file for each machine
    # that connects
    log file = /var/log/samba/log.%m

    # Cap the size of the individual log files (in KiB).
    max log size = 1000

    # We want Samba to log a minimum amount of information to syslog. Everything
    # should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log
    # through syslog you should set the following parameter to something higher.
    syslog = 0

    # Do something sensible when Samba crashes: mail the admin a backtrace
    panic action = /usr/share/samba/panic-action %d


    ####### Authentication #######
    security = user

    # Server role. Defines in which mode Samba will operate. Possible
    # values are "standalone server", "member server", "classic primary
    # domain controller", "classic backup domain controller", "active
    # directory domain controller".
    #
    # Most people will want "standalone sever" or "member server".
    # Running as "active directory domain controller" will require first
    # running "samba-tool domain provision" to wipe databases and create a
    # new domain.
    server role = standalone server

    # If you are using encrypted passwords, Samba will need to know what
    # password database type you are using.
    passdb backend = tdbsam

    obey pam restrictions = yes

    # This boolean parameter controls whether Samba attempts to sync the Unix
    # password with the SMB password when the encrypted SMB password in the
    # passdb is changed.
    unix password sync = yes

    # For Unix password sync to work on a Debian GNU/Linux system, the following
    # parameters must be set (thanks to Ian Kahan <<kahan@informatik.tu-muenchen.de> for
    # sending the correct chat script for the passwd program in Debian Sarge).
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

    # This boolean controls whether PAM will be used for password changes
    # when requested by an SMB client instead of the program listed in
    # 'passwd program'. The default is 'no'.
    pam password change = yes

    # This option controls how unsuccessful authentication attempts are mapped
    # to anonymous connections
    map to guest = bad user

    ############ Misc ############


    # Allow users who've been granted usershare privileges to create
    # public shares, not just authenticated ones
    usershare allow guests = yes

    #======================= Share Definitions =======================

    [homes]
    comment = Home Directories
    browseable = no

    # By default, the home directories are exported read-only. Change the
    # next parameter to 'no' if you want to be able to write to them.
    read only = no

    # File creation mask is set to 0700 for security reasons. If you want to
    # create files with group=rw permissions, set next parameter to 0775.
    create mask = 0700

    # Directory creation mask is set to 0700 for security reasons. If you want to
    # create dirs. with group=rw permissions, set next parameter to 0775.
    directory mask = 0700

    # By default, \\server\username shares can be connected to by anyone
    # with access to the samba server.
    # The following parameter makes sure that only "username" can connect
    # to \\server\username
    # This might need tweaking when using external authentication schemes
    valid users = %S

    [printers]
    comment = All Printers
    browseable = no
    path = /var/spool/samba
    printable = yes
    guest ok = no
    read only = yes
    create mask = 0700

    # Windows clients look for this share name as a source of downloadable
    # printer drivers
    [print$]
    comment = Printer Drivers
    path = /var/lib/samba/printers
    browseable = yes
    read only = yes
    guest ok = no

    [public]
    comment = public storage
    path = /home/shares/public
    valid users = @users
    force group = users
    create mask = 0660
    directory mask = 0771
    read only = no