Paperless Exporter als Script unter Admin mit root ohne Pw Abfrage ausführen

  • Moin Moin,
    wie der Zungenbrecher - Titel schon sagt, habe ich folgendes vor:

    Ich habe Cronical als Container nur für den PaperlessNGX Exporter laufen. Für alle anderen Cronjobs nutze ich Crontab. Jetzt würde ich mir auch gerne Cronical sparen, einfach um einen Container weniger zu pflegen. Und für mich hat sich Cronical (bis auf die eMail Nachrichten zur Bestätigung) auch als recht nutzlos erwiesen.

    Naja, nachdem der UGREEN Support mir nochmal bestätigt hat, dass man an einem Aufgabenplaner arbeitet:

    Quote

    ....2) Aufgabenplaner
    Ein integrierter Aufgabenplaner steht bereits auf unserer internen Roadmap.
    Ein Veröffentlichungsdatum können wir noch nicht nennen....

    und:

    ...Ihr Feedback zu den geplanten Funktionen (insbesondere dem Aufgabenplaner) haben wir gerne aufgenommen. Unsere Entwicklung arbeitet bereits an Verbesserungen, und solche Rückmeldungen helfen uns sehr bei der Priorisierung...

    möchte ich den PaperlessNGX Exporter auch gerne via Crontab ausführen.

    Händisch klappt das auch und ist völlig unspektakulär:

    Der Export wird schön in eine Zip Datei gepackt, und gut ist. Wäre da nur nicht das kleine Wort sudo, welches unbedingt zur korrekten Ausführung des Exporters benötigt wird.

    Nun gibt es für mich 2 Möglichkeiten:

    1) Entweder ich trage das Script in den Crontab vom User root ein. Dann wird das Script auch automatisch mit root Rechten ausgeführt. Nachteil: Es kann bei einem Firmware Update passieren, das meine Eintragungen gelöscht werden. Muss aber nicht.

    2): Ich trage das Script als Ausnahme in die Datei /etc/sudoers ein, damit der User Admin das Script mit root Rechten ohne pw Abfrage ausführen kann (natürlich mit sudo visudo). Und noch besser, ich brauche die Datei sudoers gar nicht editieren (weil gefährlich), ich kann einfach in das Verzeichnis /etc/sudoers.d/ eine Konfigurationsdatei legen:

    Code
    # See sudoers(5) for more information on "@include" directives:
    @includedir /etc/sudoers.d
    Tutorial: sudo-Konfigurationsdateien in /etc/sudoers erstellen | Computer Weekly
    Die Erstellung benutzerdefinierter sudo-Konfigurationen kann Admins bei der Vereinfachung der Verwaltung und Aktualisierung von Diensten unterstützen.
    www.computerweekly.com

    Nunja, das habe ich alles gemacht, aber leider wird beim ausführen des Script's trotzdem noch das Pw abgefragt.

    So sieht der Eintrag in der Konfiguration - Datei aus:
    deltapapa ALL=(root) NOPASSWD: /home/deltapapa/scripts/paperlessngx/export.sh
    Aus Sicherheitsgründen hat diese Datei chmod 0440

    Wie gesagt, im Terminal mit einmaliger Pw Abfrage funktioniert das Script problemlos, aber als Crontab unter User Admin leider nicht, weil das Pw fehlt.

    Hat das von euch schonmal jemand hinbekommen?

    Mein System:

    DXP4800Plus, 2× 1TB Lexar NM790, 3x Toshiba 8TB MG10ADA800E, 2x 32GB Crucial DDR5 - 5600 S0DIMM CT32G56C46S5, UGOS 1.14.1.0107
    DS918+, 12GB RAM, Volume1 -> 3x 4TB WD RED WD40EFRX / 1x 4TB WD RED WD40EFAX, Volume2 -> 1x 500GB NVMe M.2 Crucial CT500P1SSD8
    Fritzbox 7590 mit OS 8.x mit Wireguard, TNG Glasfaser, Linux Mint 22.x / Ubuntu - Server 24.x

  • Go to Best Answer
  • Hm, ich habe es direkt in die sudoers rein gepackt und das kleine Script läuft dann problemlos mit sudo ohne PW Frage. Also grundsätzlich geht es.

    Allerdings habe ich das mit der eigenen sudoers-Konfig Datei noch nicht probiert.


    Hm, ich glaube das

    deltapapa ALL=(root) NOPASSWD: /home/deltapapa/scripts/paperlessngx/export.sh

    ist nicht richtig für Deinen Fall(?). Probiere entweder

    deltapapa ALL=(ALL) NOPASSWD: /home/deltapapa/scripts/paperlessngx/export.sh

    oder

    deltapapa ALL=(deltapapa) NOPASSWD: /home/deltapapa/scripts/paperlessngx/export.sh

    und dann aufrufen mit:
    sudo -u deltapapa /home/deltapapa/scripts/paperlessngx/export.sh
    Diese Variante ist "streng", da nur deltapapa das Script aufrufen darf. Ohne Gewähr ;)

    Edited once, last by Wwa1: Ein Beitrag von Wwa1 mit diesem Beitrag zusammengefügt. (November 26, 2025 at 11:02 AM).

  • Mhhhh,

    macht er leider nicht:

    Code
    deltapapa@DXP4800PLUS:~$ sudo -u deltapapa /home/deltapapa/scripts/paperlessngx/export.sh
    permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.45/containers/Paperless-ngx/json": dial unix /var/run/docker.sock: connect: permission denied

    Und ich habe es direkt in der sudoers und in der Konfig Datei versucht. Naja, ich probiere mal weiter.

    Noch eine Nachfrage: Wo hast du es in der Datei sudoers eingetragen? Ich habe es hier versucht:

    This image is exclusive to our members!
    Please log in or register for free to view graphics and attachments.

    Mein System:

    DXP4800Plus, 2× 1TB Lexar NM790, 3x Toshiba 8TB MG10ADA800E, 2x 32GB Crucial DDR5 - 5600 S0DIMM CT32G56C46S5, UGOS 1.14.1.0107
    DS918+, 12GB RAM, Volume1 -> 3x 4TB WD RED WD40EFRX / 1x 4TB WD RED WD40EFAX, Volume2 -> 1x 500GB NVMe M.2 Crucial CT500P1SSD8
    Fritzbox 7590 mit OS 8.x mit Wireguard, TNG Glasfaser, Linux Mint 22.x / Ubuntu - Server 24.x

  • Habe inzwischen auf die userspezifische Variante umgestellt, fand die Idee ganz gut.

    Nach

    cd /etc/sudoers.d

    gehen und dort mit

    sudo visudo 50_meinuser

    eine userspezifische sudoers Datei anlegen (50 willkürlich gewählt).
    Die Rechte der Datei habe ich nicht geändert, ich nehme mal an das visudo "weiß" was es macht...

    Da dann den üblichen Befehl einfügen:

    meinuser ALL=(ALL) NOPASSWD: /home/meinuser/script.sh

    Das Script läuft dann hier problemlos ohne PW Rückfrage!

  • Nur nochmal für mich als Laien: Es müsste ja so sein, wenn ich einen Terminal mit meinem User deltapapa öffne, dort einmal das Pw für deltapapa angebe und den Terminal erfolgreich starte und dann das Script ausführe, dürfte er dann ja nicht nochmal nachfragen, oder?

    Weil sort will das script bei dem Aufruf mit Sudo immer nochmal ein Pw haben...

    Mein System:

    DXP4800Plus, 2× 1TB Lexar NM790, 3x Toshiba 8TB MG10ADA800E, 2x 32GB Crucial DDR5 - 5600 S0DIMM CT32G56C46S5, UGOS 1.14.1.0107
    DS918+, 12GB RAM, Volume1 -> 3x 4TB WD RED WD40EFRX / 1x 4TB WD RED WD40EFAX, Volume2 -> 1x 500GB NVMe M.2 Crucial CT500P1SSD8
    Fritzbox 7590 mit OS 8.x mit Wireguard, TNG Glasfaser, Linux Mint 22.x / Ubuntu - Server 24.x

  • Also wenn du per ssh im Terminal auf dem nas eingeloggt bis mit deinem Admin und dann ein script mit sudo startest, wird er nach dem PW fragen. Aber eben nicht mehr wenn das Script in sudoers mit NOPASSWD freigegeben ist! Sudo muss man aber trotzdem davor setzen sonst würde es nur mit deinem Admin laufen.

    Im script könntest du am Anfang noch als kleine Erinnerung einbauen:

    Code
    if [ "$EUID" -ne 0 ]; then
      echo "Dieses Skript muss mit Root-Rechten (sudo) ausgeführt werden um Docker zu stoppen."
      exit 1
    fi
  • Jo, danke, habe ich mit eingebaut.

    Aber klappen tut es trotzdem nicht. Frischen ssh Terminal aufgebaut, eingeloggt und dann wie im Screenshot den Befehl ausgeführt:

    This image is exclusive to our members!
    Please log in or register for free to view graphics and attachments.

    Und dann will er das Pw trotzdem wieder haben.....

    So sieht die Konfig-Datei aus:

    This image is exclusive to our members!
    Please log in or register for free to view graphics and attachments.

    Ich glaube, ich werde noch irre......

    Mein System:

    DXP4800Plus, 2× 1TB Lexar NM790, 3x Toshiba 8TB MG10ADA800E, 2x 32GB Crucial DDR5 - 5600 S0DIMM CT32G56C46S5, UGOS 1.14.1.0107
    DS918+, 12GB RAM, Volume1 -> 3x 4TB WD RED WD40EFRX / 1x 4TB WD RED WD40EFAX, Volume2 -> 1x 500GB NVMe M.2 Crucial CT500P1SSD8
    Fritzbox 7590 mit OS 8.x mit Wireguard, TNG Glasfaser, Linux Mint 22.x / Ubuntu - Server 24.x

  • Naja, nachdem der UGREEN Support mir nochmal bestätigt hat, dass man an einem Aufgabenplaner arbeitet:

    Vielleicht kommt der ja bereits mit dem nächsten Update, was wohl wieder am letzten Freitag des Monats (also übermorgen) veröffentlicht werden sollte, wenn ich mich recht erinner.

    Ich such mal meine Glaskugel…

    FRITZ!Box 5590 Fiber | UniFi Express 7 | 2,5-GBit-LAN & Wi-Fi 7
    DXP2800 - 1TB Crucial P310 NVMe RAID1 - 2TB Crucial MX500 SSD RAID1 - 16 GB Crucial CT16G56C46S5 (5600Mhz)
    DS224+ 3TB WD Red HDD RAID1 18GB Ram | DS124 1TB Samsung 870 EVO SSD
    Linux Mint | Ubuntu-Server | Windows | iOS | iPadOS
    UGREEN.FORUM/Filebase | Synology-forum/Add-ons | GitHub.com/toafez

  • So schaut das Mopet bis jetzt aus, und du hast recht, ich mache das auch um etwas über das System zu lernen und weil es mir Spaß macht (wenn ich denn die Zeit habe, ab heute Rest der Woche EU, daher auch die ganzen Post hier) -> Aber wenn es nicht klappt, kann es auch recht frustrierend sein.


    Aber wie gesagt, das ist alles spielerei, solange ich das Ding nicht mit sudo aber ohne Pw zum laufen bekomme...

    Mein System:

    DXP4800Plus, 2× 1TB Lexar NM790, 3x Toshiba 8TB MG10ADA800E, 2x 32GB Crucial DDR5 - 5600 S0DIMM CT32G56C46S5, UGOS 1.14.1.0107
    DS918+, 12GB RAM, Volume1 -> 3x 4TB WD RED WD40EFRX / 1x 4TB WD RED WD40EFAX, Volume2 -> 1x 500GB NVMe M.2 Crucial CT500P1SSD8
    Fritzbox 7590 mit OS 8.x mit Wireguard, TNG Glasfaser, Linux Mint 22.x / Ubuntu - Server 24.x

  • Ich bin mir nicht sicher, aber einen Versuch wär es wert.

    probier mal chmod +x dein-script.sh und dann sudo ./dein-script.sh. Du schaltest ja das Script frei, dass es kein Passwort braucht. Aber verwendest bash und das würde ja wieder ein Passwort brauchen. So verstehe ich es jedenfalls.

    Edit: Zu viel Zeit gelassen beim tippen und Wwa1 war schneller :)

  • Auch um das noch mal für mich aufzudröseln:

    Bei

    sudo script

    schaut sudo in der sudoers Datei nach. Wenn das script da gefunden wird und es hat NOPASSWS, darf sudo das ohne PW Nachfrage als root starten.

    Bei

    sudo bash script

    schaut sudo wieder in die sudoers und findet dort bash nicht und fragt deshalb nach dem PW.

    Und bitte nicht die bash in sudoers eintragen, bash ist eine mächtige Shell, mit der man beliebige Kommandos ausführen und damit das System nahezu uneingeschränkt kontrollieren kann. Immer nur ganz wenige Befehle/Skripte per NOPASSWD eintragen um möglichst wenig "root" Angriffsfläche freizugeben.

  • IHR SEID MEINE HELDEN....

    War jetzt kurz in der Muckibude, und ganz heiß drauf es auszuprobieren. Und zack, ihr beide hattet recht, ohne dem bash im aufruf läuft das script durch.

    chmod +x dein-script.sh hatte ich jetzt nicht mehr gemacht. Aber, ich habe bei meinen ersten gehversuchen mit dem Notepad++ eine sh Datei erstellt, die aber nicht funktionierte. Dann habe ich immer ein bestehendes Script z.B. hier aus den TUT genommen, inhalt gelöscht und meinen Inhalt reingeschrieben, was dann ging. Ich vermute der Aufruf mit +x macht das ganze unter Linux ausführbar?

    Und noch einen Nachtrag, im Crontab muss bash aber dazwischen, oder?

    Herzlichen Dank nochmal, voll kuhl, ich freue mich :)


    Und achja, so schaut die log Datei jetzt aus, ist noch nicht schön aber funktioniert:

    This image is exclusive to our members!
    Please log in or register for free to view graphics and attachments.

    Mein System:

    DXP4800Plus, 2× 1TB Lexar NM790, 3x Toshiba 8TB MG10ADA800E, 2x 32GB Crucial DDR5 - 5600 S0DIMM CT32G56C46S5, UGOS 1.14.1.0107
    DS918+, 12GB RAM, Volume1 -> 3x 4TB WD RED WD40EFRX / 1x 4TB WD RED WD40EFAX, Volume2 -> 1x 500GB NVMe M.2 Crucial CT500P1SSD8
    Fritzbox 7590 mit OS 8.x mit Wireguard, TNG Glasfaser, Linux Mint 22.x / Ubuntu - Server 24.x

    Edited once, last by deltapapa: Ein Beitrag von deltapapa mit diesem Beitrag zusammengefügt. (November 26, 2025 at 3:06 PM).

  • Und noch einen Nachtrag, im Crontab muss bash aber dazwischen, oder?

    Nein, du sagst doch schon im Skript in der ersten Zeile

    Bash
    #!/bin/bash

    womit es ausgeführt werden soll. Einfach Pfad zum Script

  • Ich nochmal, dank Tommes auch hier die Ausgabe in der Logdatei in einer besseren Version:

    Und so sieht dann die Ausgabe aus:

    This image is exclusive to our members!
    Please log in or register for free to view graphics and attachments.

    Jetzt will ich mal schauen, ob ich aus dem Script von Willi noch die max. Anzahl von Zip Dateien einbauen kann, und dann bin ich richtig glücklich :)

    Mein System:

    DXP4800Plus, 2× 1TB Lexar NM790, 3x Toshiba 8TB MG10ADA800E, 2x 32GB Crucial DDR5 - 5600 S0DIMM CT32G56C46S5, UGOS 1.14.1.0107
    DS918+, 12GB RAM, Volume1 -> 3x 4TB WD RED WD40EFRX / 1x 4TB WD RED WD40EFAX, Volume2 -> 1x 500GB NVMe M.2 Crucial CT500P1SSD8
    Fritzbox 7590 mit OS 8.x mit Wireguard, TNG Glasfaser, Linux Mint 22.x / Ubuntu - Server 24.x

Participate now!

Join our community with over 10,000 members!

Register yourself now for free to get full access to all content, graphics, downloads and other exclusive features!