Rust-Crates

sudo-ctdra (1.0.1)

Published 2026-09-12 22:59:10 +00:00 by Gitea-Bot in Rust-Crates/sudo

Installation

[registry]
default = "gitea"

[registries.gitea]
index = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/" # Sparse index
# index = "https://gitea.creative-dragonslayer.de/Rust-Crates/_cargo-index.git" # Git

[net]
git-fetch-with-cli = true
cargo add sudo-ctdra@1.0.1

About this package

Eine Rust-Bibliothek zur Überprüfung und Anforderung von Root-Rechten über sudo unter Linux.

sudo-ctdra

Eine kompakte, leichtgewichtige Rust-Bibliothek zur Überprüfung und Anforderung von Root-/Administrator-Rechten über sudo unter Linux und Unix-Systemen.


🚀 Übersicht & Features

  • Root-Prüfung (is_run_as_root): Schnelle und zuverlässige Überprüfung der effektiven Benutzer-ID (libc::geteuid() == 0).
  • Prozess-Eskalation (run_as_root): Startet das aktuelle Programm über sudo neu, übergibt alle Befehlszeilenargumente (std::env::args) und ersetzt den aktuellen Prozess (CommandExt::exec).
  • Saubere Fehlerbehandlung: Gibt bei Fehlschlägen einen [std::io::Error] zurück, anstatt das Programm unkontrolliert zu beenden oder ungefragt zu loggen.
  • Rust Edition 2024: Moderner Rust-Standard mit optimierten Profileinstellungen.
  • Automatisierte CI/CD-Workflows: Vorkonfigurierte Gitea Actions für Tests, Compiler-Checks, Paketierung und Releases.

📦 Einbindung

Füge die Crate zu deiner Cargo.toml hinzu:

[dependencies]
sudo-ctdra = { version = "1.0.0", registry = "gitea" }

Falls die Gitea Package Registry genutzt wird, trage diese in deiner .cargo/config.toml ein:

[registries.gitea]
index = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/"

💡 Anwendungsbeispiel

use sudo_ctdra::{is_run_as_root, run_as_root};

fn main() {
    if is_run_as_root() {
        println!("Programm läuft mit Root-Rechten.");
        // Privilegierte Aktionen durchführen...
    } else {
        println!("Normale Benutzerrechte erkannt. Starte neu als Root über sudo...");
        let err = run_as_root();
        eprintln!("Fehler beim Ausführen von 'sudo': {err}");
        std::process::exit(1);
    }
}

📁 Projektstruktur

.
├── .gitea/
│   └── workflows/
│       ├── main.yaml       # CI/CD: Test, Check, Publish & Release für 'main'
│       └── testing.yaml    # CI/CD: Test, Check & Pre-Release für 'testing'
├── .idea/                  # Vorkonfigurierte JetBrains IDE Einstellungen
├── src/
│   └── lib.rs              # Einstiegspunkt der Crate / Bibliotheksfunktionen
├── tests/
│   └── integration_tests.rs # Integrations- und Subprozess-Tests
├── Cargo.lock
├── Cargo.toml              # Crate-Manifest & Metadaten
├── LICENSE                 # GNU General Public License v3.0
├── AGENTS.md               # Richtlinien und Kontext für KI-Agenten
└── README.md               # Projektdokumentation

💻 Lokale Entwicklung & Befehle

Die gängigen Cargo-Befehle zur Entwicklung und Validierung:

  • Kompilierung prüfen:

    cargo check --all-targets
    
  • Tests ausführen (Unit-, Integrations- und Doc-Tests):

    cargo test
    
  • Linter & Code-Formatierung:

    cargo clippy --all-targets -- -D warnings
    cargo fmt --check
    
  • Crate lokal paketieren:

    cargo package
    
  • Dokumentation generieren:

    cargo doc --no-deps --open
    

🔄 CI/CD & Branching-Workflow

Branch Trigger Aktionen
testing Push auf testing cargo test
cargo check --all-targets
cargo package
• Erstellt/Aktualisiert Pre-Release v<VERSION>-preview mit .crate-Asset
main Push auf main cargo test
cargo check --all-targets
cargo package
• Veröffentlicht Crate in Gitea Package Registry
• Erstellt/Aktualisiert Release v<VERSION> mit .crate-Asset

Hinweis zur Versionierung: Die Versionsnummer wird automatisch aus Cargo.toml (version = "...") ausgelesen. Passe vor einem Release / Merge die Version in Cargo.toml entsprechend SemVer an.


📄 Lizenz

Dieses Projekt steht unter der GNU General Public License v3.0 or later (GPL-3.0-or-later).

Dependencies

ID Version
libc ^1.0.0-alpha.4
Details
Cargo
2026-09-12 22:59:10 +00:00
12
DragonSlayer_14
GPL-3.0-or-later
28 KiB
Assets (1)
Versions (2) View all
1.0.1 2026-09-12
1.0.0 2026-08-26