Samba: Difference between revisions
No edit summary |
|||
Line 25: | Line 25: | ||
sudo netstat -pant | grep smbd # mine shows 139 & 445 | sudo netstat -pant | grep smbd # mine shows 139 & 445 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* [https://www.cyberciti.biz/faq/what-ports-need-to-be-open-for-samba-to-communicate-with-other-windowslinux-systems/ What Ports Need To Be Open For Samba To Communicate With Other Windows/Linux Systems?] Ans: 139 & 445. | * [https://www.cyberciti.biz/faq/what-ports-need-to-be-open-for-samba-to-communicate-with-other-windowslinux-systems/ What Ports Need To Be Open For Samba To Communicate With Other Windows/Linux Systems?] Ans: 139 & 445. | ||
Line 141: | Line 122: | ||
** directory mask = 0770: as before, but for '''directories'''. | ** directory mask = 0770: as before, but for '''directories'''. | ||
** This has nothing to do with Samba. This is related to file permissions. | ** This has nothing to do with Samba. This is related to file permissions. | ||
== smbclient command - terminal method == | |||
<ul> | |||
<li>You can use the `smbclient` command to send or receive files to a Samba server from the Linux command line. `smbclient` is a program that comes with Samba and provides an FTP-like interface to access files on a Samba server. <br> | |||
To install `smbclient` on Ubuntu, you can use the following command: '''sudo apt install smbclient'''. Once you have `smbclient` installed, you can use it to send a file to a Samba server with a command like this: '''smbclient //server/share -c 'cd /remote/path ; put local-file' ''' . This command connects to the specified Samba server and share, changes to the specified remote directory, and uploads the specified local file. You can also use the `-U` option to specify a different remote username if needed. <br> | |||
To receive a file from a Samba server, you can use the `get` command within `smbclient`, like this: '''smbclient //server/share -c 'cd /remote/path ; get remote-file' '''. This command connects to the specified Samba server and share, changes to the specified remote directory, and downloads the specified remote file. | |||
<li>'''Mount a samba shared folder'''. <br> | |||
See [[#Mounting_a_Samba_Share_using_the_cifs-utils_package| Mounting_a_Samba_Share_using_the_cifs-utils_package]]. But for some reason, all files in the shared folder belong to "root"? | |||
<li>I have trouble to connect to the samba server though connecting it itself from the samba server works fine. | |||
<syntaxhighlight lang='bash'> | |||
$ 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 | |||
</syntaxhighlight> | |||
</ul> | |||
= Remove and re-install Samba = | = Remove and re-install Samba = | ||
Line 169: | Line 177: | ||
/mnt/folder_to_mount_to/ | /mnt/folder_to_mount_to/ | ||
</pre> | </pre> | ||
= How to mount a Samba shared directory at boot = | |||
[https://linuxconfig.org/how-to-mount-a-samba-shared-directory-at-boot How to mount a Samba shared directory at boot] | |||
= Permission denied on soft-link folders = | = Permission denied on soft-link folders = | ||
Line 183: | Line 194: | ||
sudo service smbd restart | sudo service smbd restart | ||
</pre> | </pre> | ||
= Example of /etc/samba/smb.conf = | = Example of /etc/samba/smb.conf = |
Revision as of 19:09, 27 July 2023
Samba - allows Linux to transfer files with Windows clients
- http://www.krizna.com/ubuntu/setup-file-server-ubuntu-14-04-samba/ (Anonymous share and Secured share via username/password)
- Samba can use the system user name but it doesn't use the system account password. That is, we need to set up a Samba password for our user account
- It is fine to use an existing directory to share
- How to Set Up a Network Shared Folder on Ubuntu With Samba 2021
- https://www.howtoforge.com/tutorial/samba-server-ubuntu-16-04/
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
- What Ports Need To Be Open For Samba To Communicate With Other Windows/Linux Systems? Ans: 139 & 445.
- Share 'between' ubuntu and Windows
- Start and stop the samba daemons
$ 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
- Share between ubuntu and linux On the client file manager, type smb://192.168.1.XX/
- https://help.ubuntu.com/community/Samba
- (2020-04-27) Ubuntu 18.04. (2022-03) Ubuntu 20.04. This is following the class "Building an Ubuntu Home Server" in lynda.com
- mkdir /mnt/stored/shared
- chmod 444 /mnt/storage/shared # optional
- sudo apt install samba
- sudo nano /etc/samba/smb.conf. Scroll down to the bottom and add
- testparm
- sudo systemctl restart smbd
- sudo smbpasswd -a CurrUserName (required)
- sudo useradd user2 # optional
- sudo passwd user2 # optional
- sudo smbpasswd -a user2 # optional
- sudo ufw allow 139/tcp # depends
- sudo ufw allow 445/tcp # depends
[fileshare] comment = share files path = /mnt/storage/shared readonly = yes create mask = 0444 directory mask = 0444
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
How to Setup a Raspberry Pi Samba Server.
- 1) sudo apt update; sudo apt-get install samba samba-common-bin
- 2) mkdir /home/pi/shared
- 3) sudo nano /etc/samba/smb.conf
[pimylifeupshare] path = /home/pi/shared writeable=Yes create mask=0777 directory mask=0777 public=no
- “create mask” and “directory mask” – This option defines the maximum permissions for both files and folders. Setting this to 0777 allows users to read, write, and execute. Note when I create a new dir using mkdir, the permission is 755.
- 4) sudo smbpasswd -a pi # samba username/password
- 5) sudo systemctl restart smbd
How to Make Your Own Wireless Printer With a Raspberry Pi
create mask, directory mask, UMASK
- Understanding UMASK with Linux and Samba
- Samba share permissions simplified
- "create mask" default is 0744. This means that, by default, the owner of a newly created file will have read, write, and execute permissions (7), while the group and others will only have read permissions.
- Directories must have the execute bit for proper access. Default parameter for "directory mask" is 0755. This means that, by default, the owner of a newly created directory will have read, write, and execute permissions (7), while the group and others will have read and execute permissions (5).
- The leading 0 in the mask 0755 is used to indicate that the value is an octal (base-8) number. The leading 0 is not required when setting permissions using the chmod command or when specifying permissions in the smb.conf file, but it is commonly included to make it clear that the value is an octal number. So, 0755 and 755 are equivalent and will result in the same permissions being set.
- How to create a Samba share
- create mask = 0660: files in the share are created with permissions to allow all group users to read and write files created by other users.
- directory mask = 0770: as before, but for directories.
- This has nothing to do with Samba. This is related to file permissions.
smbclient command - terminal method
- You can use the `smbclient` command to send or receive files to a Samba server from the Linux command line. `smbclient` is a program that comes with Samba and provides an FTP-like interface to access files on a Samba server.
To install `smbclient` on Ubuntu, you can use the following command: sudo apt install smbclient. Once you have `smbclient` installed, you can use it to send a file to a Samba server with a command like this: smbclient //server/share -c 'cd /remote/path ; put local-file' . This command connects to the specified Samba server and share, changes to the specified remote directory, and uploads the specified local file. You can also use the `-U` option to specify a different remote username if needed.
To receive a file from a Samba server, you can use the `get` command within `smbclient`, like this: smbclient //server/share -c 'cd /remote/path ; get remote-file' . This command connects to the specified Samba server and share, changes to the specified remote directory, and downloads the specified remote file. - Mount a samba shared folder.
See Mounting_a_Samba_Share_using_the_cifs-utils_package. But for some reason, all files in the shared folder belong to "root"? - 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
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
To check your samba version
$ smbd -V Version 4.3.11-Ubuntu
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/
How to mount a Samba shared directory at boot
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