diff options
Diffstat (limited to 'man/de/dpkg-buildflags.1')
-rw-r--r-- | man/de/dpkg-buildflags.1 | 320 |
1 files changed, 320 insertions, 0 deletions
diff --git a/man/de/dpkg-buildflags.1 b/man/de/dpkg-buildflags.1 new file mode 100644 index 0000000..77d661e --- /dev/null +++ b/man/de/dpkg-buildflags.1 @@ -0,0 +1,320 @@ +.\" dpkg manual page - dpkg-buildflags(1) +.\" +.\" Copyright © 2010-2011 Raphaël Hertzog <hertzog@debian.org> +.\" Copyright © 2011 Kees Cook <kees@debian.org> +.\" +.\" This is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2 of the License, or +.\" (at your option) any later version. +.\" +.\" This is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License +.\" along with this program. If not, see <http://www.gnu.org/licenses/>. +. +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.TH dpkg\-buildflags 1 2012\-04\-03 Debian\-Projekt dpkg\-Programmsammlung +.SH NAME +dpkg\-buildflags \- liefert Bauschalter zum Einsatz beim Paketbau +. +.SH ÜBERSICHT +\fBdpkg\-buildflags\fP [\fIOption\fP ?] [\fIBefehl\fP] +. +.SH BESCHREIBUNG +\fBdpkg\-buildflags\fP ist ein Werkzeug, das zum Abfragen der zu verwendenden +Kompilierungsschalter für den Bau von Debian\-Paketen eingesetzt wird. +. +Die Standardschalter werden vom Lieferanten definiert, sie können auf +mehrere Arten erweitert/überschrieben werden: +.IP 1. +systemweit mit \fB/etc/dpkg/buildflags.conf\fP +.IP 2. +für den aktuellen Benutzer mit \fB$XDG_CONFIG_HOME/dpkg/buildflags.conf\fP, +wobei \fB$XDG_CONFIG_HOME\fP standardmäßig auf \fB$HOME/.config\fP gesetzt ist +.IP 3. +temporär durch den Benutzer mittels Umgebungsvariablen (siehe Abschnitt +\fBUMGEBUNG\fP) +.IP 4. +dynamisch durch den Paketverwalter mittels Umgebungsvariablen, die über +\fBdebian/rules\fP gesetzt wurden (siehe Abschnitt \fBUMGEBUNG\fP) +.P +Die Konfigurationsdateien können zwei Arten von Direktiven enthalten: +.TP +\fBSET\fP\fI Schalter Wert\fP +Überschreibt den Schalter namens \fISchalter\fP, um den Wert \fIWert\fP zu +erhalten. +.TP +\fBSTRIP\fP\fI Schalter Wert\fP +Aus dem Schalter namens \fISchalter\fP alle in \fIWert\fP aufgeführten Bauschalter +entfernen +.TP +\fBAPPEND\fP\fI Schalter Wert\fP +Erweitert den Schalter namens \fISchalter\fP durch Anhängen der in \fIWert\fP +angegebenen Optionen. Ein Leerzeichen wird vor den angehängten Wert +vorangestellt, falls der derzeitige Wert nicht leer ist. +.TP +\fBPREPEND\fP\fI Schalter Wert\fP +Erweitert den Schalter namens \fISchalter\fP durch Voranstellen der in \fIWert\fP +angegebenen Optionen. Ein Leerzeichen wird hinter den vorangestellten Wert +angehängt, falls der derzeitige Wert nicht leer ist. +.P +Die Konfigurationsdateien können Kommentare auf Zeilen enthalten, die mit +einer Raute (#) beginnen. Leere Zeilen werden auch ignoriert. +.SH BEFEHLE +.TP +\fB\-\-dump\fP +Auf der Standardausgabe alle Kompilierschalter und ihre Werte ausgeben. Es +wird ein Schalter pro Zeile ausgegeben, wobei der Werte durch ein +Gleichheitszeichen (»\fISchalter\fP=\fIWert\fP«) abgetrennt wird. Dies ist die +Standardaktion. +.TP +\fB\-\-list\fP +Gibt die Liste der vom aktuellen Lieferanten unterstützen Schalter (eine pro +Zeile) aus. Lesen Sie den Abschnitt \fBUNTERSTÜTZTE SCHALTER\fP für weitere +Informationen über sie. +.TP +\fB\-\-export=\fP\fIFormat\fP +Auf der Standardausgabe Shell\- (falls \fIFormat\fP \fBsh\fP ist) oder Make\- (falls +\fIFormat\fP \fBmake\fP ist) Befehle ausgeben, die dazu verwandt werden können, +alle Kompilierschalter in die Umgebung zu exportieren. Falls \fIFormat\fP +\fBconfigure\fP lautet, kann die Ausgabe für eine Kommandozeile von +\&\fB./configure\fP verwandt werden. Falls der Wert von \fIFormat\fP nicht angegeben +wird, wird \fBsh\fP angenommen. Nur Kompilierschalter, die mit einem +Großbuchstaben beginnen, werden aufgenommen. Bei allen anderen wird +angenommen, dass sie für die Umgebung nicht geeignet sind. +.TP +\fB\-\-get\fP\fI Schalter\fP +Gibt den Wert des Schalters auf der Standardausgabe aus. Beendet sich mit 0, +falls der Schalter bekannt ist, andernfalls mit 1. +.TP +\fB\-\-origin\fP\fI Schalter\fP +Gibt den Ursprung des von \fB\-\-get\fP gelieferten Werts aus. Beendet sich mit +0, falls der Schalter bekannt ist, andernfalls mit 1. Der Ursprung kann +einer der folgenden Werte sein: +.RS +.TP +\fBvendor\fP +der ursprünglich vom Lieferanten gesetzte Schalter wird zurückgeliefert +.TP +\fBsystem\fP +der Schalter wurde durch eine systemweite Konfiguration gesetzt/verändert +.TP +\fBuser\fP +der Schalter wurde durch eine benutzerspezifische Konfiguration +gesetzt/verändert +.TP +\fBenv\fP +der Schalter wurde durch eine umgebungsspezifische Konfiguration +gesetzt/verändert +.RE +.TP +\fB\-\-query\-features\fP\fI Bereich\fP +Gibt die Funktionalitäten, die für den übergebenen Bereich aktiviert sind, +aus. Der einzige derzeit erkannte Bereich ist \fBhardening\fP. Beendet sich mit +0, falls der Bereich bekannt ist, andernfalls mit 1. +.IP +Das Ausgabeformat ist im Kopfzeilen\-Stil von RFC822, mit einem Abschnitt pro +Funktionalität. Beispiel: +.IP +.nf + Feature: pie + Enabled: no + + Feature: stackprotector + Enabled: yes +.fi +.TP +\fB\-\-help\fP +Zeige den Bedienungshinweis und beende. +.TP +\fB\-\-version\fP +Gebe die Version aus und beende sich. +. +.SH "UNTERSTÜTZTE SCHALTER" +.TP +\fBCFLAGS\fP +Optionen für den C\-Compiler. Der vom Lieferanten gesetzte Standardwert +enthält \fI\-g\fP und die Standard Optimierungsstufe (normalerweise \fI\-O2\fP oder +\fI\-O0\fP, falls die Umgebungsvariable \fBDEB_BUILD_OPTIONS\fP \fInoopt\fP definiert. +.TP +\fBCPPFLAGS\fP +Optionen für den C\-Präprozessor. Standardwert: leer +.TP +\fBCXXFLAGS\fP +Optionen für den C++\-Compiler. Identisch zu \fBCFLAGS\fP. +.TP +\fBFFLAGS\fP +Optionen für den Fortran\-Compiler. Identisch zu \fBCFLAGS\fP. +.TP +\fBLDFLAGS\fP +Optionen die beim Linken von Programmen oder Laufzeitbibliotheken an den +Compiler weitergegeben werden (falls der Linker direkt aufgerufen wird, +müssen \fB\-Wl\fP und \fB,\fP aus diesen Optionen entfernt werden). Standardmäßig +leer. +. +.SH DATEIEN +.TP +\fB/etc/dpkg/buildflags.conf\fP +Systemweite Konfigurationsdatei +.TP +\fB$XDG_CONFIG_HOME/dpkg/buildflags.conf\fP oder \fB$HOME/.config/dpkg/buildflags.conf\fP +Benutzer\-Konfigurationsdatei +.SH UMGEBUNG +Es gibt einen Satz von zwei Umgebungsvariablen, die den gleichen Vorgang +durchführen. Der erste (DEB_\fISchalter\fP_\fIVorg\fP) sollte niemals innerhalb +von \fBdebian/rules\fP verwandt werden. Er ist für Benutzer gedacht, die das +Quellpaket mit anderen Bauschaltern erneut bauen möchten. Der zweite Satz +(DEB_\fISchalter\fP_MAINT_\fIVorg\fP) sollte nur durch Paketbetreuer in +\fBdebian/rules\fP verwandt werden, um die entstehenden Bauschalter zu ändern. +.TP +\fBDEB_\fP\fISchalter\fP\fB_SET\fP +.TQ +\fBDEB_\fP\fISchalter\fP\fB_MAINT_SET\fP +Diese Variable kann zum Erzwingen des für \fISchalter\fP zurückgegebenen Werts +verwandt werden. +.TP +\fBDEB_\fP\fISchalter\fP\fB_STRIP\fP +.TQ +\fBDEB_\fP\fISchalter\fP\fB_MAINT_STRIP\fP +Diese Variable kann zum Bereitstellen einer durch Leerzeichen getrennten +Liste von Optionen verwandt werden, die aus dem Satz von \fISchalter\fP +zurückgelieferten Schaltern entfernt werden. +.TP +\fBDEB_\fP\fISchalter\fP\fB_APPEND\fP +.TQ +\fBDEB_\fP\fISchalter\fP\fB_MAINT_APPEND\fP +Diese Variable kann zum Anhängen ergänzender Optionen zum Wert, der von +\fISchalter\fP zurückgegeben wird, verwandt werden. +.TP +\fBDEB_\fP\fISchalter\fP\fB_PREPEND\fP +.TQ +\fBDEB_\fP\fISchalter\fP\fB_MAINT_PREPEND\fP +Diese Variable kann zum Voranstellen ergänzender Optionen zum Wert, der von +\fISchalter\fP zurückgegeben wird, verwandt werden. +.TP +\fBDEB_BUILD_MAINT_OPTIONS\fP +Diese Variable kann zum Deaktivieren oder Aktivieren verschiedener +Härtungsbauschalter durch die Option \fBhardening\fP verwandt werden. Lesen Sie +den Abschnitt \fBHÄRTUNG\fP für weitere Details. +. +.SH HÄRTUNG +Mehrere Kompilierzeit\-Optionen (weiter unten beschrieben) können dazu +verwandt werden, ein erstelltes Programm gegen Speicherverfälschungsangriffe +zu härten, oder zusätzliche Warnungsmeldungen während der Übersetzung +auszugeben. Sie werden für Architekturen, die diese unterstützen, +standardmäßig aktiviert; die Ausnahmen sind unten angegeben. +.P +Jede Härtungsfunktionalität kann durch den entsprechenden \fBHärtungs\-\fP\-Wert +in der Umgebungsvariablen \fBDEB_BUILD_MAINT_OPTIONS\fP mit den »+«\- und +»\-«\-Schaltern aktiviert und deaktiviert werden. Soll beispielsweise die +»pie«\-Funktionalität aktiviert und die »fortify«\-Funktionalität deaktiviert +werden, können Sie Folgendes in \fBdebian/rules\fP verwenden: +.P + export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,\-fortify +.P +Die spezielle Funktionalität \fBall\fP kann dazu verwandt werden, alle +Härtungsfunktionalitäten auf einmal zu aktivieren oder zu deaktiveren. Um +daher alles zu deaktiveren und nur »format« und »fortify« zu aktiveren, kann +Folgendes eingesetzt werden: +.P + export DEB_BUILD_MAINT_OPTIONS=hardening=\-all,+format,+fortify +. +.TP +\fBformat\fP +Diese Einstellung (standardmäßig aktiviert) fügt \fB\-Wformat +\-Werror=format\-security\fP zu \fBCFLAGS\fP und \fBCXXFLAGS\fP hinzu. Damit wird über +inkorrekte Formatzeichenkettenverwendungen gewarnt und zu einem Fehler +führen, wenn Formatfunktionen deart verwandt werden, dass daraus ein +mögliches Sicherheitsproblem werden könnte. Derzeit warnt dies über Aufrufe +auf \fBprintf\fP\- und \fBscanf\fP\-Funktionen, bei denen die Formatzeichenkette +nicht eine reine Zeichenkette ist und es keine Formatargumente gibt, wie in +\fBprintf(foo);\fP statt \fBprintf("%s", foo);\fP. Dies könnte ein +Sicherheitsproblem sein, falls die Formatzeichenkette aus einer +unvertrauenswürdigen Eingabe stammt und »%n« enthält. +. +.TP +\fBfortify\fP +Diese Einstellung (standardmäßig aktiviert) fügt \fB\-D_FORTIFY_SOURCE=2\fP zu +\fBCPPFLAGS\fP hinzu. Während der Code\-Erstellung hat der Compiler umfangreiche +Informationen über Puffergrößen (wo möglich) und versucht, unsichere +unbegrenzte Pufferfunktionsaufrufe durch längenbegrenzte zu ersetzen. Das +ist besonders für alten, verkramten Code nützlich. Zusätzlich werden +Formatzeichenketten in schreibbarem Speicher, die »%n« enthalten, +blockiert. Falls eine Anwendung von solchen Formatzeichenketten abhängt, +müssen dafür andere Lösungsmöglichkeiten gefunden werden. + +Beachten Sie, dass die Quellen auch mit \fB\-O1\fP oder höher kompiliert werden +müssen, damit diese Option einen Effekt hat. +.TP +\fBstackprotector\fP +Diese Einstellung (standardmäßig aktiviert) fügt \fB\-fstack\-protector +\-\-param=ssp\-buffer\-size=4\fP zu \fBCFLAGS\fP und \fBCXXFLAGS\fP hinzu. Dies fügt +Sicherheitsprüfungen gegen die Überschreibung des Stapelspeichers (Stacks) +hinzu. Damit werden viele mögliche Code\-Einfügeangriffe zu +Abbruchsituationen. Im besten Fall werden damit Code\-Einfügungsangriffe zu +Diensteverweigerungsangriffen oder zu keinen Problemen (abhängig von der +Anwendung). + +Diese Funktionalität benötigt das Linken mit Glibc (oder einem anderen +Anbieter von \fB__stack_chk_fail\fP). Sie muss daher deaktiviert werden, wenn +mit \fB\-nostdlib\fP oder \fB\-ffreestanding\fP oder Ähnlichem gebaut wird. +. +.TP +\fBrelro\fP +Diese Einstellung (standardmäßig aktiviert) fügt \fB\-Wl,\-z,relro\fP zu +\fBLDFLAGS\fP hinzu. Während des Ladens des Programms müssen mehrere +ELF\-Speicherabschnitte vom Binder (Linker) geschrieben werden. Diese +Einstellung signalisiert dem Ladeprogramm, diese Abschnitte in +nur\-Lese\-Zugriff zu ändern, bevor die Steuerung an das Programm übergeben +wird. Insbesondere verhindert dies GOT\-Überschreibeangriffe. Falls diese +Option deaktiviert ist, wird auch \fBbindnow\fP deaktiviert. +. +.TP +\fBbindnow\fP +Diese Einstellung (standardmäßig deaktiviert) fügt \fB\-Wl,\-z,now\fP zu +\fBLDFLAGS\fP hinzu. Während des Ladens des Programms werden alle dynamischen +Symbole aufgelöst, womit das gesamte PLT nur\-lesend markiert werden kann +(aufgrund von \fBrelro\fP oben). Diese Option kann nicht aktiviert werden, +falls \fBrelro\fP nicht aktiviert ist. +. +.TP +\fBpie\fP +Diese Einstellung (standardmäßig deaktiviert) fügt \fB\-fPIE\fP zu \fBCFLAGS\fP und +\fBCXXFLAGS\fP sowie \fB\-fPIE \-pie\fP zu \fBLDFLAGS\fP hinzu. »Position Independent +Executable« (positionsunabhängige Programme) werden benötigt, um »Address +Space Layout Randomization« (Bereitstellung eines zufälligen +Adressbereichlayouts) auszunutzen, der von einigen Kernelversionen +bereitgestellt wird. Während ASLR bereits für Datenbereiche auf dem Stapel +(Stack) und Heap erzwungen werden kann (brk und mmap), müssen die +Codebereiche positionsunabhängig übersetzt werden. Laufzeitbibliotheken +machen dies bereits (\-fPIC), so dass sie ASLR automatisch erhalten, aber +Programm\-.text\-Regionen müssen mit PIE gebaut werden, um ASLR zu +erhalten. Wenn dies passiert, sind ROP\- (Return Oriented Programming) +Angriffe sehr viel schwerer durchzuführen, da es keine statischen Orte mehr +gibt, zu denen während eines Speicherverfälschungsangriffs hingesprungen +werden könnte. + +Dies ist nicht mit \fB\-fPIC\fP kompatibel, daher muss beim Erstellen von +Laufzeitbibliotheken Vorsicht angewandt werden. + +Zusätzlich können auf einigen Architekturen (am deutlichsten auf i368) +Leistungsverluste von bis zu 15% in sehr text\-Segment\-lastigen +Anwendungsfällen auftreten, da PIE über allgemeine Register implementiert +ist; in den meisten Anwendungsfällen sind dies weniger als 1%. Architekturen +mit mehr allgemeinen Registern (z.B. Amd64) erfahren nicht diese +Schlimmstfall\-Strafe. +.SH ÜBERSETZUNG +Die deutsche Übersetzung wurde 2004, 2006-2012 von Helge Kreutzmann +<debian@helgefjell.de>, 2007 von Florian Rehnisch <eixman@gmx.de> und +2008 von Sven Joachim <svenjoac@gmx.de> +angefertigt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die +GNU General Public License Version 2 oder neuer für die Kopierbedingungen. +Es gibt KEINE HAFTUNG. |