Automatische PW eingabe dpkg-sig

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Spike1986
Beiträge: 153
Registriert: 25.01.2012 20:16:47

Automatische PW eingabe dpkg-sig

Beitrag von Spike1986 » 22.04.2017 23:02:15

Irgendo hab ich mal ein befehl gefunden das im Script automatich das PW bei dpkg-sig eingeben wird. Leider finde ich es nicht mehr.

Code: Alles auswählen

echo -e $PW | dpkg-sig -k B835BE2E --sign builder test.deb

hat mir leider nicht geholfen. Hat jemand eine Idee für mich?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Automatische PW eingabe dpkg-sig

Beitrag von rendegast » 23.04.2017 09:07:20

Wie wäre es mit '--passphrase-file|-f', siehe 'man dpkg-sig'?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Spike1986
Beiträge: 153
Registriert: 25.01.2012 20:16:47

Re: Automatische PW eingabe dpkg-sig

Beitrag von Spike1986 » 23.04.2017 10:41:14

hab ich vergessen mit zu erwähnen:
wenn ich die Option "--passphrase-file" erhalte ich folgende Meldung:

Code: Alles auswählen

Aufruf: gpg [Optionen] --clearsign [Dateiname]
E: Signing failed. Error code: 512
Edit:
ich meine mich zu erinnern das ich es mit der Option --gpgoptions hinbekommen habe.

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: Automatische PW eingabe dpkg-sig

Beitrag von breakthewall » 23.04.2017 17:06:23

Spike1986 hat geschrieben:

Code: Alles auswählen

echo -e $PW | dpkg-sig -k B835BE2E --sign builder test.deb
Damit das funktionieren kann fehlt ein gpg Parameter, nämlich --passphrase-fd 0. Dann kannst das Passwort via echo pipen, was so auch nicht auf der Kommandozeile erscheint.

Und hinsichtlich gpg v2 gibt es auch entscheidene Parameter zu beachten, damit das auf der Kommanozeile korrekt abläuft. Hierzu gehören --batch und --no-tty, die einem eine Menge an Problemen ersparen.

Alternativ gäbe es auch die Lösung via --passphrase-file, was jedoch den Pfad zu jener Datei bekanntgeben würde, was nicht sonderlich sicher ist. Da wäre eine Anonymous Pipe besser geeignet.

Beispiel 1:

Code: Alles auswählen

PW="/root/dpkg-key"
cat "$PW" | dpkg-sig -k B835BE2E --sign builder test.deb --gpgoptions --batch --no-tty --passphase-fd 0
So wäre das Passwort weder im Shellscript noch auf der Kommandozeile im Klartext zu finden.

Beispiel 2:

Code: Alles auswählen

PW="/root/dpkg-key"
dpkg-sig -k B835BE2E --sign builder test.deb --gpgoptions --batch --no-tty --passphase-file <(cat "$PW")
Hier käme eine Anonymous Pipe via Process Substitution zum Einsatz. Es wird ausschließlich der Inhalt innerhalb der Klammern ausgeführt und in eine Pipe nach /dev/fd/63 umgewandelt, die gpg quasi vorgaukelt es würde sich um einen validen Pfad handeln, womit gpg von /dev/fd/63 liest wie aus einer regulären Datei die das Passwort enthält. Auch hier erscheint nichts ausser dieses File-Descriptors auf der Kommandozeile, noch ist es möglich dessen Inhalte extern auszulesen, was das recht sicher gestaltet. Diese Pipe stirbt unmittelbar nach Prozessende und lässt keinerlei Daten zurück.

Und bezüglich der Fehlermeldungen, solltest auch deine Kommandozeile posten damit das nachvollziehbar ist.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Automatische PW eingabe dpkg-sig

Beitrag von rendegast » 23.04.2017 18:08:04

breakthewall hat geschrieben: ... Lösung via --passphrase-file, was jedoch den Pfad zu jener Datei bekanntgeben würde, was nicht sonderlich sicher ist.
<->
Da wäre eine Anonymous Pipe besser geeignet.
Beispiel 1:
PW="/root/dpkg-key"
cat "$PW" | ...
? Hier kann ein Beobachter auch den Pfad lesen.
Und was soll so schlecht daran sein?
Es gibt schließlich auch

Code: Alles auswählen

mount.cifs -o credentials=... ...
Gegenmaßnahme wäre imo:
proc on /proc type proc (rw,relatime,hidepid=1)
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: Automatische PW eingabe dpkg-sig

Beitrag von breakthewall » 24.04.2017 01:18:13

rendegast hat geschrieben:? Hier kann ein Beobachter auch den Pfad lesen.
Und was soll so schlecht daran sein?
Es gibt schließlich auch

Code: Alles auswählen

mount.cifs -o credentials=... ...
Gegenmaßnahme wäre imo:
proc on /proc type proc (rw,relatime,hidepid=1)
Prinzipiell gesehen hast recht damit, es sei denn das Shellscript ist nur für Root sichtbar. Dann wäre allerdings noch das Problem mit /proc/PID/fd. Das lässt sich sofern möglich entweder mit hidepid=1/2 beheben, wie schon sagtest, oder das Shellscript wird bspw. stets nach /dev/shm kopiert, von dort aus ausgeführt, dann automatisch gelöscht beim Start, womit ebenso alle Spuren verwischt wären. Dann bliebe ja quasi nur noch die Option entweder gdb oder strace nutzen zu müssen. Obwohl es auch dafür Gegenmaßnahmen gäbe, was aber nun zu weit führen würde, da solche Ansprüche nicht gegeben sind.

Aber die Grundidee war lediglich das zu vermitteln und zu vermeiden das nun Passwörter im Klartext erscheinen, was besonders im Shellscript selbst oder in der Kommandozeile was nie etwas Gutes ist, und von jedem gelesen werden kann. Und gesetzt den Fall, ein Shellscript läuft mal nicht auf dem heimschen PC, dann wäre es erst recht gut wenn da prinzipiell nichts auf Anhieb sichtbar ist. Sicher muss man den Pfad zu einer Schlüsseldatei auch nicht zwingend verbergen, auch wenn es je nach Situation ein Vorteil sein kann um noch sicherer zu gehen, und um seine Möglichkeiten zu kennen.

Spike1986
Beiträge: 153
Registriert: 25.01.2012 20:16:47

Re: Automatische PW eingabe dpkg-sig

Beitrag von Spike1986 » 24.04.2017 19:15:51

breakthewall hat geschrieben: Beispiel 2:

Code: Alles auswählen

PW="/root/dpkg-key"
[code]dpkg-sig -k B835BE2E --sign builder test.deb --gpgoptions --batch --no-tty --passphase-file
<(cat "$PW")[/code]
bekomme da folgenden Fehlermeldung:

Code: Alles auswählen

test: Syntax error: "(" unexpected
wenn ich den befehl so probiere:

Code: Alles auswählen

dpkg-sig -k B835BE2E --sign builder test.deb --gpgoptions --batch --no-tty --passphase-file
kommt dann diese Meldung:

Code: Alles auswählen

Unknown option: gpgoptions
Unknown option: no-tty
Unknown option: passphase-file

Edit: Mit diesem Befehl bekomme ich es hin

Code: Alles auswählen

#!/bin/bash
PW="/root/dpkg-key"

cd /media/feed/test

dpkg-sig -k B835BE2E --sign builder test.deb --gpg-options="--batch --no-tty --passphrase-file" <(cat "$PW")
und dann bash test.sh
Bekomme dann die Meldung:

E: We can only work on debs and changes files.
Wo habe ich den denkfehler?

Wenn ich im VZ bin und den dpkg-sig -k B835BE2E --sign builder test.deb befehl eingebe klappt es, also solte die deb File in Ordnung sein

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Automatische PW eingabe dpkg-sig

Beitrag von rendegast » 24.04.2017 21:47:56

Spike1986 hat geschrieben: PW="/root/dpkg-key"
dpkg-sig -k B835BE2E --sign builder test.deb --gpgoptions --batch --no-tty --passphase-file <(cat "$PW")

bekomme da folgenden Fehlermeldung:
test: Syntax error: "(" unexpected
Okay, die Redirection sollte wohl eher so

Code: Alles auswählen

        PW="/root/dpkg-key"
        dpkg-sig ... < "$PW"
Und
... --passphase-file <(cat "$PW")
wäre eher

Code: Alles auswählen

 --passphase-file "$PW"
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Spike1986
Beiträge: 153
Registriert: 25.01.2012 20:16:47

Re: Automatische PW eingabe dpkg-sig

Beitrag von Spike1986 » 24.04.2017 21:58:12

rendegast hat geschrieben:
Spike1986 hat geschrieben: PW="/root/dpkg-key"
dpkg-sig -k B835BE2E --sign builder test.deb --gpgoptions --batch --no-tty --passphase-file <(cat "$PW")

bekomme da folgenden Fehlermeldung:
test: Syntax error: "(" unexpected
Okay, die Redirection sollte wohl eher so

Code: Alles auswählen

        PW="/root/dpkg-key"
        dpkg-sig ... < "$PW"
Und
... --passphase-file <(cat "$PW")
wäre eher

Code: Alles auswählen

 --passphase-file "$PW"

super Danke.

So klappt es jetzt:

Code: Alles auswählen

dpkg-sig -k B835BE2E --sign builder cd /media/feed/test/test.deb --gpg-options="--batch --no-tty --passphrase-file $PW"
passphrase-file nicht passphase-file
und
--gpg-options="..." <<< sonst klappt die gpg Optionen nicht

Spike1986
Beiträge: 153
Registriert: 25.01.2012 20:16:47

Re: Automatische PW eingabe dpkg-sig

Beitrag von Spike1986 » 24.04.2017 22:18:03

hab der dpkg-key chmod 700 gesetzt

kann ich noch etwas anpassen um die Sicherheit zu erhöhen?

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Automatische PW eingabe dpkg-sig

Beitrag von MSfree » 25.04.2017 08:29:02

Spike1986 hat geschrieben:hab der dpkg-key chmod 700 gesetzt
kann ich noch etwas anpassen um die Sicherheit zu erhöhen?
Warum hast du dem Key Ausführungsrechte gegeben? Das Execute-Bit sollte wirklich nur bei Programmen und für Verzeichnisse gesetzt sein, aber nie für normale Dateien.

Und eigentlich sollte die Datei auch keine Schreibrechte benötigen.

Antworten