| .\"******************************************************************* |
| .\" |
| .\" This file was generated with po4a. Translate the source file. |
| .\" |
| .\"******************************************************************* |
| .TH dpkg\-buildflags 1 2011\-09\-13 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\-\-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 |
| \-Wformat\-security \-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 |
| \fBCFLAGS\fP und \fBCXXFLAGS\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. |
| . |
| .TP |
| \fBbindnow\fP |
| This setting (disabled by default) adds \fB\-Wl,\-z,now\fP to \fBLDFLAGS\fP. During |
| program load, all dynamic symbols are resolved, allowing for the entire PLT |
| to be marked read\-only (due to \fBrelro\fP above). |
| . |
| .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 AUTOR |
| Copyright \(co 2007\-2011 Rapha\[:e]l Hertzog |
| .sp |
| Copyright \(co 2011 Kees Cook |
| .sp |
| Dies ist Freie Software; lesen Sie die GNU General Public License Version 2 |
| oder neuer für die Kopierbedingungen. Es gibt KEINE Haftung. |
| |
| .SH ÜBERSETZUNG |
| Die deutsche Übersetzung wurde 2004, 2006-2011 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. |