FSA/README.md
mxnticek 9c97169799 Initial commit: Universal Samba share manager
Features:
- Auto-detects Linux distribution (Arch, Debian, Ubuntu, Fedora, RHEL, etc.)
- Auto-installs Samba if not present
- Auto-detects current user and network interfaces
- Supports disk discovery and management
- Optional persistent mounting via /etc/fstab
- Safe configuration management with backups

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-09 20:32:47 +01:00

168 lines
3.5 KiB
Markdown

# 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 <share-name>
```
**Delete a share**:
```bash
sudo ./spravuj_sdileni.sh delete <share-name>
```
**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.