====== Sharing Files with Windows ====== [[https://www.samba.org/|Samba]] is the open-source implementation of the SMB/CIFS protocol used by Windows for file and printer sharing. By running a Samba server (i.e. ''smbd''), your Linux server can present shared folders on the network that Windows (and macOS/Linux) can browse and access like a normal Windows file share. The Samba service is already installed on the jPC, but the Samba server is disabled by default. You'll enable/start the services, create a share directory, set permissions, configure Samba, add a Samba user, and connect from a client. ===== 1) Enable and start the Samba services ===== Enable the services to start at boot, and start them now: sudo systemctl enable --now smbd nmbd wsdd2 ===== 2) Create a Samba user/password ===== Samba uses its own password database. Create a Samba password for the ''admin'' user using [[https://manpages.debian.org/trixie/samba-common-bin/smbpasswd.8.en.html|smbpasswd]]: # Set password sudo smbpasswd -a "admin" # Enable user sudo smbpasswd -e "admin" Restart Samba to apply changes: sudo systemctl restart smbd At this point, you should be able to see your user(s) home directories by navigating to ''\\JPC_IP_ADDRESS\'' on a Windows PC. Log in with the Samba username/password you set with ''smbpasswd''. {{ .:samba_home.png }} **NOTE:** Sometimes it can take approximately 30 seconds to access the share for the first time. ===== 3) Create the share directory and set permissions ===== # Create a directory to share sudo mkdir -p /srv/samba/my_shared_folder # Set group ownership and permissions: # - 2770 = rwx for owner+group, none for others; setgid bit keeps group on new files sudo chgrp sambashare /srv/samba/my_shared_folder sudo chmod 2770 /srv/samba/my_shared_folder ===== 4) Configure a Shared Folder ===== Edit the Samba configuration file: sudo nano /etc/samba/smb.conf Add this share definition at the end of the file: [my_shared_folder] path = /srv/samba/my_shared_folder browsable = yes read only = no valid users = @sambashare force group = sambashare create mask = 0660 directory mask = 2770 Restart Samba to apply changes: sudo systemctl restart smbd ===== 5) Connect to the share from Windows ===== To access the previously created ''my_shared_folder'' folder, enter the following in Windows' file explorer. \\JPC_IP_ADDRESS\my_shared_folder Log in with the Samba username/password you set with ''smbpasswd''. {{ :jpc:windows_file_sharing:samba_shared_folder.png }} **NOTE:** Sometimes it can take approximately 30 seconds to access the share for the first time. ===== Troubleshooting ===== Most "Access denied" problems are Linux filesystem permission issues. Verify: * Your user is in the ''sambashare'' group, by running ''groups''. * ''/srv/samba/shared'' is group-owned by ''sambashare'' and has mode ''2770'' If you previously connected to the Linux Samba share from Windows, but it won't connect again, tell Windows to forget the previous connection with the following command net use \\JPC_IP_ADDRESS\Shared /delete