kde-dolphin-ftp-sharing-tab/README.md

217 lines
5.2 KiB
Markdown

# Dolphin FTP Share Tab
Ein KDE Dolphin Properties-Dialog Plugin zum Erstellen und Verwalten von FTP-Freigaben — direkt über die GUI.
![Share Tab](screenshot.png)
## Features
- **FTP-Tab** in Dolphins Ordner-Eigenschaften (Rechtsklick → Eigenschaften)
- Freigabe per Checkbox aktivieren/deaktivieren
- Freigabename konfigurierbar (Standard = Ordnername)
- **Per-User Berechtigungen**: Read Only / Read-Write pro Benutzer
- Jeder Benutzer sieht **nur seine freigegebenen Ordner** per FTP
- Read-Only wird direkt am Dateisystem durchgesetzt (read-only Bind-Mount)
- Automatische Einrichtung mit `dolphin-ftp-share setup`
## Voraussetzungen
- Pure-FTPd als FTP-Server
- Das Helper-Script `dolphin-ftp-share` im PATH
- Build-Dependencies (siehe unten)
## Einrichtung
### 1. Pure-FTPd installieren
```bash
sudo apt install pure-ftpd
```
### 2. Helper-Script installieren
```bash
sudo cp scripts/dolphin-ftp-share /usr/local/bin/
sudo chmod +x /usr/local/bin/dolphin-ftp-share
```
### 3. Automatisches Setup
Das Setup konfiguriert Pure-FTPd komplett und erstellt die sudoers-Regel:
```bash
sudo dolphin-ftp-share setup
```
Das macht automatisch:
- Aktiviert PureDB-Authentifizierung (virtuelle FTP-Benutzer)
- Deaktiviert System-Login und anonymen Zugang
- Aktiviert Chroot (jeder sieht nur seine Ordner)
- Erstellt sudoers-Regel für mount/umount/pure-pw
- Aktiviert Logging
- Startet Pure-FTPd neu
### 4. FTP-Passwörter setzen
FTP-Benutzer werden beim ersten Freigeben automatisch erstellt (Standard-Passwort = Benutzername). Passwort ändern:
```bash
dolphin-ftp-share passwd <benutzername> <neues-passwort>
```
### Logging
Pure-FTPd loggt über syslog:
```bash
# Logs live verfolgen:
sudo tail -f /var/log/syslog | grep pure-ftpd
```
## Versionen
| Verzeichnis | Zielplattform | KDE Frameworks | Qt |
|---|---|---|---|
| `kf5/` | Debian 12 Bookworm | KF5 | Qt5 |
| `kf6/` | Debian 13 Trixie | KF6 | Qt6 |
Der C++ Quellcode ist identisch — nur die CMake-Konfiguration unterscheidet sich.
## Build & Installation
### Debian 12 (KF5)
**Build-Dependencies:**
```bash
sudo apt install build-essential cmake extra-cmake-modules \
libkf5kio-dev libkf5coreaddons-dev libkf5i18n-dev \
qtbase5-dev
```
**Bauen:**
```bash
cd kf5
bash build.sh
```
**Installieren:**
```bash
sudo cp build/bin/ftpshareplugin.so \
/usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/propertiesdialog/
```
**Dolphin neustarten:**
```bash
killall dolphin; dolphin &
```
### Debian 13 Trixie (KF6)
**Build-Dependencies:**
```bash
sudo apt install build-essential cmake extra-cmake-modules \
libkf6kio-dev libkf6coreaddons-dev libkf6i18n-dev \
qt6-base-dev
```
**Bauen:**
```bash
cd kf6
bash build.sh
```
**Installieren:**
```bash
sudo cp build/bin/ftpshareplugin.so \
/usr/lib/x86_64-linux-gnu/qt6/plugins/kf6/propertiesdialog/
```
**Dolphin neustarten:**
```bash
killall dolphin; dolphin &
```
## Deinstallation
```bash
# KF5
sudo rm /usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/propertiesdialog/ftpshareplugin.so
# KF6
sudo rm /usr/lib/x86_64-linux-gnu/qt6/plugins/kf6/propertiesdialog/ftpshareplugin.so
# Helper-Script & sudoers
sudo rm /usr/local/bin/dolphin-ftp-share
sudo rm /etc/sudoers.d/dolphin-ftp-share
# Pure-FTPd (optional)
sudo apt remove pure-ftpd
```
## Projektstruktur
```
kde-dolphin-ftp-sharing-tab/
├── README.md
├── scripts/
│ └── dolphin-ftp-share # Helper-Script für Share-Verwaltung
├── kf5/ # Debian 12 (KDE Plasma 5)
│ ├── CMakeLists.txt
│ ├── build.sh
│ └── src/
│ ├── CMakeLists.txt
│ ├── ftpshareplugin.json
│ ├── ftpshareplugin.h
│ └── ftpshareplugin.cpp
└── kf6/ # Debian 13 (KDE Plasma 6)
├── CMakeLists.txt
├── build.sh
└── src/
├── CMakeLists.txt
├── ftpshareplugin.json
├── ftpshareplugin.h
└── ftpshareplugin.cpp
```
## Wie es funktioniert
1. **Rechtsklick auf Ordner → Eigenschaften → FTP-Tab**
2. Freigabe aktivieren, Berechtigungen pro Benutzer setzen (Read Only / Read-Write)
3. Beim Anwenden ruft das Plugin `dolphin-ftp-share add` auf
4. Das Helper-Script:
- Erstellt für jeden Benutzer ein persönliches FTP-Root (`~/.local/share/dolphin-ftp-root/users/<name>/`)
- Bind-mounted den freigegebenen Ordner dorthin
- Read-Only Freigaben werden als read-only Bind-Mount gemountet
- Erstellt automatisch virtuelle Pure-FTPd-Benutzer (PureDB)
5. **Jeder FTP-Benutzer sieht nur seine freigegebenen Ordner** — durch Chroot auf sein persönliches FTP-Root
### Kommandos
| Kommando | Beschreibung |
|---|---|
| `dolphin-ftp-share setup` | Einmalige Pure-FTPd Einrichtung |
| `dolphin-ftp-share add <name> <path> <acl>` | Freigabe erstellen |
| `dolphin-ftp-share delete <name>` | Freigabe löschen |
| `dolphin-ftp-share info` | Bestehende Freigaben auflisten |
| `dolphin-ftp-share passwd <user> <pass>` | FTP-Passwort ändern |
### Berechtigungen
| Level | Beschreibung |
|---|---|
| `---` | Kein Zugriff — Ordner ist für diesen Benutzer nicht sichtbar |
| `ro` | Read Only — nur Download |
| `rw` | Read-Write — Upload und Download |
## Lizenz
GPLv2+