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>
This commit is contained in:
commit
9c97169799
2 changed files with 751 additions and 0 deletions
168
README.md
Normal file
168
README.md
Normal file
|
|
@ -0,0 +1,168 @@
|
|||
# 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue