# FSA - Fucking Samba Ass Universal Samba share management script that works across all major Linux distributions. ## Features - 🔍 **Auto-detection**: Automatically detects your Linux distribution - 📦 **Auto-installation**: Installs Samba if not already present - 👤 **User-aware**: Automatically detects the current user - 🌐 **Network-aware**: Auto-detects network interfaces - 💾 **Disk management**: Discovers and manages disk shares - 🔄 **Persistent mounts**: Optionally adds disks to /etc/fstab for auto-mount on boot - 🛡️ **Safe**: Creates backups before modifying configuration ## Supported Distributions - Arch Linux / Manjaro - Debian / Ubuntu / Linux Mint / Pop!_OS - Fedora - RHEL / CentOS / Rocky Linux / AlmaLinux - openSUSE / SLES ## Installation 1. Download the script: ```bash wget https://forgejo.mxnticek.eu/mxnticek/FSA/raw/branch/main/spravuj_sdileni.sh chmod +x spravuj_sdileni.sh ``` 2. Run with sudo (the script will auto-install Samba if needed): ```bash sudo ./spravuj_sdileni.sh ``` ## Usage ### Initialize Configuration Create a fresh Samba configuration with your user's home directory: ```bash sudo ./spravuj_sdileni.sh init ``` ### Mount and Share a Disk **Temporary mount** (until reboot): ```bash sudo ./spravuj_sdileni.sh mount-share ``` **Permanent mount** (adds to /etc/fstab): ```bash sudo ./spravuj_sdileni.sh mount-share --mode=always ``` ### Manage Shares **Discover available disks**: ```bash sudo ./spravuj_sdileni.sh discover ``` **List configured shares**: ```bash sudo ./spravuj_sdileni.sh list ``` **Create a specific share**: ```bash sudo ./spravuj_sdileni.sh create ``` **Delete a share**: ```bash sudo ./spravuj_sdileni.sh delete ``` **Auto-create shares for all mounted disks**: ```bash sudo ./spravuj_sdileni.sh auto-disks ``` ## Share Types The script creates different types of shares: ### Home Share - Read/write access for all users - Guest access enabled - Shares your user's home directory ### Root Share - Full filesystem access - Requires authentication - Only accessible by the detected user - Runs with root privileges ### Disk Shares - Automatically configured for external disks - Custom dfree scripts for accurate disk space reporting - Proper permissions (664/775) - Force user/group settings ## Configuration All shares include: - SMB2/SMB3 protocol support - Network restrictions (local networks only) - Optimized socket options - Performance tuning (sendfile, AIO) Default allowed networks: - 127.0.0.1 (localhost) - 192.168.0.0/16 (private network) - 10.0.0.0/8 (private network) - 172.16.0.0/12 (private network) - 100.64.0.0/10 (CGNAT/Tailscale) ## Advanced Usage ### Add [global] section to existing config ```bash sudo ./spravuj_sdileni.sh add-global ``` ### Create all static shares (home + root) ```bash sudo ./spravuj_sdileni.sh create-all ``` ## Troubleshooting ### Check service status ```bash sudo systemctl status smbd nmbd # or on some distros: sudo systemctl status smb nmb ``` ### View logs ```bash sudo journalctl -u smbd -u nmbd -f ``` ### Test configuration ```bash sudo testparm ``` ### Check which shares are visible ```bash smbclient -L localhost -N ``` ## Security Notes - Always review the generated configuration - Shares are restricted to local networks by default - Root share requires authentication - Guest access is only enabled for home shares by default ## License Do whatever the fuck you want with it. ## Author Created with frustration and love for Samba configuration.