Samba

From 太極
Jump to navigation Jump to search

Samba - allows Linux to transfer files with Windows clients

sudo apt-get install -y samba samba-common python-glade2 system-config-samba
sudo cp -pf /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo sh -c 'cat /dev/null  > /etc/samba/smb.conf'
sudo nano /etc/samba/smb.conf
sudo service smbd restart
testparm
# password protected
sudo addgroup smbgrp
sudo useradd till -G smbgrp
sudo smbpasswd -a SOMEEXISTEDUSER
sudo mkdir -p /samba/secured
cd /samba
sudo chmod -R 0770 secured
sudo chown root:smbgrp secured
sudo nano /etc/samba/smb.conf
sudo service smbd restart 
testparm

sudo netstat -pant | grep smbd   # mine shows 139 & 445
  • I have trouble to connect to the samba server though connecting it itself from the samba server works fine.
$ smbclient -L //192.168.1.XX/sambashare -U SOMEEXISTEDUSER
WARNING: The "syslog" option is deprecated
Connection to 192.168.1.XX failed (Error NT_STATUS_IO_TIMEOUT)

# From server itself
$ smbclient -L //localhost 

# Solution: ufw
# https://askubuntu.com/a/184806
sudo ufw allow Samba

# From the client 
$ smbclient -L //192.168.1.XX/sambashare -U YYY
# No error. Return to the local prompt again.
# Now we can use Ubuntu's Files app to connect to the server
# smb://192.168.1.XX/
$ ps -ef | grep smbd    # see if the Samba daemon (smbd)
$ ps -ef | grep nmbd    # see if the NetBIOS name server daemon (nmbd) is running

$ sudo service smbd stop  # does not stop nmbd 
$ sudo service nmbd stop

$ sudo service smbd start
$ sudo service nmbd start
sudo apt-get install samba samba-common
sudo apt-get install python-glade2
sudo apt-get install system-config-samba

Use Dash and search for 'samba'. It will ask for the user's password first. The samba password can also be set by

sudo smbpasswd -a USERNAME

A non-gui way to configuration samba is adding the following to the end of /etc/samba/smb.conf file, sudo nano -w /etc/samba/smb.conf (-w means no-wrap). Any line beginning with a semicolon (“;”) or a hash (“#”) character is ignored.

[brb]
        path = /home/brb
;       writeable = no
;       browseable = yes
        guest ok = yes
  • (2020-04-27) Ubuntu 18.04. (2022-03) Ubuntu 20.04. This is following the class "Building an Ubuntu Home Server" in lynda.com
    1. mkdir /mnt/stored/shared
    2. chmod 444 /mnt/storage/shared # optional
    3. sudo apt install samba
    4. sudo nano /etc/samba/smb.conf. Scroll down to the bottom and add
    5. [fileshare]
        comment = share files
        path = /mnt/storage/shared
        readonly = yes
        create mask = 0444
        directory mask = 0444
      
    6. testparm
    7. sudo systemctl restart smbd
    8. sudo smbpasswd -a CurrUserName (required)
    9. sudo useradd user2 # optional
    10. sudo passwd user2 # optional
    11. sudo smbpasswd -a user2 # optional
    12. sudo ufw allow 139/tcp # depends
    13. sudo ufw allow 445/tcp # depends

On Windows PC, go to start and open 'Run' then enter ip with double backslash. Like this (\\192.168.1.XX). On macOS/Linux, "Connect to Server" in the file browser, smb://192.168.1.XX/fileshare.

On Android, FE explorer, click "+". Enter Display Name, Host Name IP, Path, Port 445, User Name/PW. Save. It works.

Raspberry pi

Build your own NAS drive with Raspberry Pi

Share printer

How to Make Your Own Wireless Printer With a Raspberry Pi

create mask, directory mask, UMASK

Remove and re-install Samba

$ sudo apt-get remove --purge samba
$ sudo apt-get remove --purge smbclient libsmbclient

$ sudo apt-get install samba
$ sudo apt-get install smbclient libsmbclient

SambaCry vulnerability and check Samba version

http://pcworld.com/article/3199106/linux/the-sambacry-scare-gives-linux-users-a-taste-of-wannacry-petya-problems.html

To check your samba version

$ smbd -V
Version 4.3.11-Ubuntu

Mounting a Samba Share using the cifs-utils package

sudo mount -t cifs \
  -o username=YOURUSERNAME,password=YOUPASSWORD \
  //server_name_or_ip/shareName \ # shareName is different from a folderName
  /mnt/folder_to_mount_to/

Permission denied on soft-link folders

(Works on Ubuntu 22.04) How do you make samba follow symlink outside the shared path

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes
sudo service smbd restart


Example of /etc/samba/smb.conf

[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = ubuntu
security = user
map to guest = bad user
dns proxy = no
logging = syslog@0 file
allow insecure wide links = yes

[share]
comment = share files
path = /home/XXX/Path1
readonly = yes
# create mask = 0444
# directory mask = 0444
follow symlinks = yes
wide links = yes

[taichiVideo]
comment = tai chi video
path = /Path2/
read only = yes
writable = no
browsable = yes
guest ok = yes