Linux Allgemein

Drucken - CUPS

Drucken - CUPS

cups von allen Benutzern verwaltbar machen

Beschreibung:


Außer Automatisch gefunde Drucker, kann man als normaler Benutzer keine Drucker installieren oder löschen etc.
Dafür kann man aber eine policy file anlegen.

Durchführung:

sudo nano /etc/polkit-1/localauthority/50-local.d/cups-allow-everything.pkla

Inhalt

[Allow users to do all printing actions without authentication]
Identity=unix-user:*
Action=org.opensuse.cupspkhelper.mechanism.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes

Cups neustarten

sudo systemctl restart cups

Drucken - CUPS

PDF Cups für linux Terminalserver / nomaschine Drucker auf Client umleiten

Beschreibung:

Druckumleitung auf Terminalserver / nomaschine funktioniert nicht.
Wir können aber vom Client auf ein Verzeichnis vom Terminalserver zugreifen zum beispiel per sftp oder nomachine Verzeichnisumleitung.

Mittels CUPS PDF werden alle Dateien im Homeverzeichnis im Verzeichnis PDF gespeichert.
Auf dem Client läuft ein Script was diesen ordner beobachtet und wenn PDFs drin sind diese dann an den angebenen Druckewr sendet.

Durchführung:

Auf dem Server:

Cups printer installieren

sudo apt-get install printer-driver-cups-pdf 

Alle Dokumente werden unter 

~/pdf

abgespeichert. Vom Client aus dieses Verzeichnis mounten. Via sftp oder nomachines Laufwerkdurchreiche selbst, nextcloud
oder oder oder....

Auf dem Client:

Dem Autoprint script Namen den Benutzer dran hängen

sudo mkdir -p /usr/local/bin
sudo nano /usr/local/bin/auto-print-<benutzername>.sh

Inhalt:

Die Variablen Watch Dir und Printer Name anpassen

#!/bin/bash

# --- Konfiguration ---
WATCH_DIR="/home/<benutzername>/Schreibtisch/Stamm/home/<benutzername-terminalserver>/PDF"         # Oder /var/spool/cups-pdf/duffy je nach Setup
PRINTER_NAME="TOSHIBA"        # Dein CUPS-Druckername (mit 'lpstat -p' prüfen)

# --- Endlosschleife ---
while true; do
    for file in "$WATCH_DIR"/*.pdf; do
        [ -e "$file" ] || continue  # Kein PDF vorhanden? Dann weiter

        echo "Drucke: $file"
        lp -d "$PRINTER_NAME" "$file" && rm -f "$file"
    done
    sleep 5  # alle 5 Sekunden prüfen
done

Ausführbar machen

sudo chmod +x /usr/local/bin/auto-print.sh

Systemd erstellen für den jeweiligen benutzer

sudo nano /etc/systemd/system/auto-print-<benutzername>.service

Inhalt:

Auch hier im Dateinamen den Benutzer anpassen

[Unit]
Description=Automatischer PDF-Drucker
After=network.target

[Service]
ExecStart=/usr/local/bin/auto-print-<benutzername>.sh
Restart=always
User=duffy
Environment=HOME=/home/<benutzername>
WorkingDirectory=/home/<benutzername>

[Install]
WantedBy=multi-user.target

Service aktibieren und starten, auch hier den benutzernamen wieder anpassen

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable --now auto-print-<benutzername>.service

SSH Client

SSH Client

SSH-Sitzung teilen, ohne Kennwort oder Schlüssel weiterzugeben

Wofür: Ein zweites Programm, ein Kollege am selben Rechner oder ein KI-Assistent soll auf einem Server arbeiten. Auf dem Server lässt sich aber kein öffentlicher Schlüssel hinterlegen (z. B. weil die Platte voll ist), und das Kennwort soll niemand sehen.

Prinzip: Du baust die Verbindung selbst auf und tippst das Kennwort nur in deinem eigenen Terminal. OpenSSH legt dabei eine Steuer-Datei (Socket) an. Weitere ssh-Aufrufe auf demselben Rechner benutzen diese offene Verbindung mit. Ein Kennwort oder ein Schlüssel ist dafür nicht nötig, und das Kennwort wird nirgends gespeichert.

1. Verbindung aufbauen (du selbst)

ssh -o ControlMaster=yes -o ControlPath=~/.ssh/cm-ZIEL -o ControlPersist=3h root@SERVER-IP
Option Bedeutung
ControlMaster=yes Diese Verbindung wird zur „Haupt“-Verbindung, an die sich andere anhängen dürfen.
ControlPath=~/.ssh/cm-ZIEL Ort der Steuer-Datei. Wähle einen sprechenden Namen pro Ziel, z. B. cm-pbs.
ControlPersist=3h Die Verbindung bleibt nach deinem Abmelden noch 3 Stunden offen.

Das Kennwort tippst du in dieses Terminal. Danach kannst du normal weiterarbeiten oder die Sitzung schließen. Die Verbindung im Hintergrund bleibt bis zum Ablauf von ControlPersist bestehen.

Wichtig: Wenn du dich vorher schon mit normalem ssh angemeldet hast, kann sich niemand an diese Sitzung hängen. Sie hat keine Steuer-Datei. Öffne deshalb ein zweites Terminal und baue die Verbindung mit dem Befehl oben neu auf.

2. Die geteilte Verbindung benutzen (der Helfer)

ssh -o ControlPath=~/.ssh/cm-ZIEL root@SERVER-IP 'hostname; df -h /'

Damit nichts hängen bleibt, wenn die Verbindung schon zu ist, empfiehlt sich zusätzlich -o BatchMode=yes. Dann fragt SSH nicht nach einem Kennwort, sondern meldet sofort einen Fehler.

3. Kontrolle und Beenden

# Läuft die Verbindung noch?
ssh -O check -o ControlPath=~/.ssh/cm-ZIEL root@SERVER-IP

# Sofort schließen (für alle, die sie mitbenutzen)
ssh -O exit -o ControlPath=~/.ssh/cm-ZIEL root@SERVER-IP

Sicherheit

Fehlerbilder

Meldung Ursache
Permission denied (publickey,password) Es existiert keine Steuer-Datei. Die Verbindung wurde ohne ControlMaster=yes aufgebaut, ist abgelaufen oder läuft auf einem anderen Rechner.
Control socket connect(...): No such file or directory Der Pfad stimmt nicht oder die Verbindung ist schon geschlossen.