Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
705ecd8142
|
||
|
|
9c34fc93cb | ||
|
|
cd9a016cf8
|
||
|
|
d88dcac7a0
|
Generated
+1
-1
@@ -2052,7 +2052,7 @@ checksum = "ba467056f1b547ed52077911161fc86985becbc60e8e1857c8a144dab0def891"
|
||||
|
||||
[[package]]
|
||||
name = "smart-mount"
|
||||
version = "2.0.0"
|
||||
version = "2.0.1"
|
||||
dependencies = [
|
||||
"aes-gcm 0.11.1",
|
||||
"anyhow",
|
||||
|
||||
+8
-7
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "smart-mount"
|
||||
version = "2.0.0"
|
||||
version = "2.0.1"
|
||||
edition = "2024"
|
||||
authors = ['DragonSlayer_14']
|
||||
readme = "README.md"
|
||||
@@ -46,10 +46,11 @@ maintainer = "DragonSlayer_14"
|
||||
copyright = "2026 DragonSlayer_14"
|
||||
section = "net"
|
||||
priority = "optional"
|
||||
# mac2ip und nmap sind harte Laufzeitabhängigkeiten (MAC->IP-Auflösung); davfs2/cifs-utils/
|
||||
# nfs-common werden bewusst NICHT hart verlangt, da smart-mount pro konfiguriertem Laufwerk
|
||||
# nur das jeweils benötigte Mount-Backend zur Laufzeit prüft/lädt (siehe MountBackend::check_available).
|
||||
depends = "$auto, mac2ip, nmap"
|
||||
# mac2ip ist eine harte Laufzeitabhängigkeit (MAC->IP-Auflösung;
|
||||
# davfs2/cifs-utils/nfs-common werden bewusst NICHT hart verlangt,
|
||||
# da smart-mount pro konfiguriertem Laufwerk nur das jeweils benötigte Mount-Backend
|
||||
# zur Laufzeit prüft/lädt (siehe MountBackend::check_available).
|
||||
depends = "$auto, mac2ip"
|
||||
recommends = "davfs2, cifs-utils, nfs-common"
|
||||
extended-description = """\
|
||||
smart-mount bindet Paare aus einem lokalen (LAN, WebDAV/SMB/NFS) und einem Cloud-Laufwerk
|
||||
@@ -78,7 +79,7 @@ assets = [
|
||||
{ source = "packaging/systemd/smart-mount-watch.service", dest = "/usr/lib/systemd/system/smart-mount-watch.service", mode = "644" },
|
||||
{ source = "packaging/systemd/smart-mount-watch.timer", dest = "/usr/lib/systemd/system/smart-mount-watch.timer", mode = "644" },
|
||||
]
|
||||
requires = { "mac2ip" = "*", "nmap" = "*" }
|
||||
requires = { "mac2ip" = "*" }
|
||||
suggests = { "davfs2" = "*", "cifs-utils" = "*", "nfs-utils" = "*" }
|
||||
# postinst/postrm-Äquivalente: richten den paketierten systemd-Dienst automatisch ein/entfernen
|
||||
# (Gegenstück zu packaging/deb/postinst+postrm). $1 in %postun: Anzahl verbleibender Versionen
|
||||
@@ -99,7 +100,7 @@ fi
|
||||
[package.metadata.arch]
|
||||
pkgrel = "1" # Wird in CI durch get-build-number.py dynamisch überschrieben
|
||||
arch = "x86_64"
|
||||
depends = ["gcc-libs", "glibc", "mac2ip", "nmap"]
|
||||
depends = ["gcc-libs", "glibc", "mac2ip"]
|
||||
optdepends = [
|
||||
"davfs2: WebDAV-Laufwerke einbinden",
|
||||
"cifs-utils: SMB/CIFS-Laufwerke einbinden",
|
||||
|
||||
@@ -14,8 +14,9 @@ werden (z. B. über ein separates Sync-Tool).
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
- **[`mac2ip`](https://gitea.creative-dragonslayer.de/Linuxapps/Mac2Ip)** und **`nmap`**: hart
|
||||
benötigt, sofern lokale Laufwerke per MAC-Adresse adressiert werden (Auflösung MAC → IP).
|
||||
- **[`mac2ip`](https://gitea.creative-dragonslayer.de/Linuxapps/Mac2Ip)**: hart benötigt, sofern
|
||||
lokale Laufwerke per MAC-Adresse adressiert werden (Auflösung MAC → IP). `mac2ip` verlangt
|
||||
`nmap` bereits selbst als eigene Paketabhängigkeit.
|
||||
- **`timeout`** (GNU coreutils): auf praktisch jedem Linux-System bereits vorhanden (Basis-
|
||||
Systempaket). Wird verwendet, um `mount`/`umount`-Aufrufe zeitlich zu begrenzen - siehe
|
||||
"Verhalten bei nicht mehr erreichbarem Server" unten.
|
||||
|
||||
+10
-5
@@ -10,13 +10,18 @@ pub mod watch;
|
||||
use clap::{CommandFactory, Parser, Subcommand};
|
||||
use clap_complete::Shell;
|
||||
|
||||
/// Bricht mit einer klaren Fehlermeldung ab, falls nicht als root aufgerufen. Mounten läuft
|
||||
/// ausschließlich als root/System-Dienst (siehe [`smart_mount::systemd`]) - es gibt seit dem
|
||||
/// Wegfall des Nutzerkontexts keine unprivilegierte Mount-Variante mehr, für die ein
|
||||
/// Rechte-Check hier zu früh käme.
|
||||
/// Startet den Prozess bei Bedarf transparent über `sudo` neu, falls nicht bereits als root
|
||||
/// aufgerufen. Mounten läuft ausschließlich als root/System-Dienst (siehe
|
||||
/// [`smart_mount::systemd`]) - es gibt seit dem Wegfall des Nutzerkontexts keine
|
||||
/// unprivilegierte Mount-Variante mehr, für die ein Rechte-Check hier zu früh käme.
|
||||
///
|
||||
/// `run_as_root()` ersetzt den aktuellen Prozess per `execve` und kehrt bei Erfolg nie zurück
|
||||
/// (siehe sudo-ctdra); der `io::Error`-Rückgabewert ist ausschließlich der Fehlerfall (z. B.
|
||||
/// `sudo` nicht gefunden).
|
||||
pub(crate) fn require_root(context: &str) -> anyhow::Result<()> {
|
||||
if !sudo_ctdra::is_run_as_root() {
|
||||
anyhow::bail!("'{context}' requires root privileges (re-run with sudo).");
|
||||
let err = sudo_ctdra::run_as_root();
|
||||
anyhow::bail!("'{context}' requires root privileges: could not re-exec via sudo: {err}");
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -64,7 +64,6 @@ pub fn run_checks(cfg: &AppConfig) -> Vec<CheckResult> {
|
||||
&cfg.settings.mac2ip_binary,
|
||||
"install mac2ip (private tool, see README)",
|
||||
));
|
||||
results.push(check_binary("nmap", "nmap", "install package 'nmap'"));
|
||||
}
|
||||
|
||||
results
|
||||
|
||||
Reference in New Issue
Block a user