Mimencode Binary Options

Der siebte Teil der Exims-Laufzeitkonfiguration nach der Umschreibkonfiguration betrifft die SMTP-Authentifizierung. Dies ist eine Erweiterung des SMTP-Protokolls, beschrieben in RFC 2554, die es einem Client-SMTP-Host ermöglicht, sich auf einem Server zu authentifizieren. Auf diese Weise kann ein Server beispielsweise Clients erkennen, die es als Relais verwenden dürfen. Die SMTP-Authentifizierung ist für die Übertragung von E-Mails zwischen Servern, die keine leitende Verbindung zueinander haben, nicht von Bedeutung. Sehr kurz, die Art und Weise SMTP-Authentifizierung funktioniert wie folgt: Der Server bewirbt eine Reihe von Authentifizierungsmechanismen. Der Client gibt einen AUTH-Befehl aus und benennt einen bestimmten Mechanismus. Der Befehl kann optional einige Authentifizierungsdaten enthalten. Der Server kann eine oder mehrere Herausforderungen ausgeben. Auf die der Kunde entsprechende Antworten senden muss. In den einfachen Authentifizierungsmechanismen sind die Herausforderungen nur die Eingabe von Benutzernamen und Passwörtern. Der Server muss keine Herausforderungen stellen - in einigen Mechanismen können die relevanten Daten mit dem AUTH-Befehl übertragen werden. Der Server akzeptiert oder verweigert die Authentifizierung. Wenn die Authentifizierung erfolgreich ist, kann der Client optional die AUTH-Option auf dem MAIL-Befehl verwenden, um einen authentifizierten Absender in nachfolgenden Mail-Transaktionen zu übergeben. Die Authentifizierung dauert für den Rest der SMTP-Verbindung. Wenn die Authentifizierung fehlschlägt, kann der Client aufgeben, oder er kann einen anderen Authentifizierungsmechanismus ausprobieren, oder er kann versuchen, Mail über die nicht authentifizierte Verbindung zu übertragen. Wenn Sie einen Client einrichten und wissen möchten, welche Authentifizierungsmechanismen der Server unterstützt, können Sie mit Telnet eine Verbindung zu Port 25 (dem SMTP-Port) auf dem Server herstellen und einen EHLO-Befehl ausgeben. Die Antwort darauf enthält die Liste der unterstützten Mechanismen. Wenn Exim SMTP-Mail empfängt, fungiert es als Server, wenn es Nachrichten über SMTP sendet und als Client fungiert. Konfigurationsoptionen werden für den Einsatz in beiden Fällen zur Verfügung gestellt. Die verschiedenen Authentifizierungsmechanismen. Diese werden durch Angabe von Authentifizierungstreibern für Exim konfiguriert. Wie die Directors, Router und Transports, die Authentifizierer in der Binärdatei enthalten sind, wird durch Build-Zeit-Definitionen gesteuert. Zwei sind derzeit verfügbar, indem sie in Local / Makefile. beziehungsweise. Der erste unterstützt den CRAM-MD5-Authentifizierungsmechanismus (RFC 2195), der zweite kann so konfiguriert werden, dass er den PLAIN-Authentifizierungsmechanismus (RFC 2595) oder den LOGIN-Mechanismus unterstützt, der nicht formal dokumentiert ist, sondern von mehreren MUAs verwendet wird. Fast der gesamte Code für die Handhabung der Authentifizierung ist von Exim weggelassen, wenn nicht mindestens ein AUTH xxx definiert ist. Dazu gehört auch der Code für die Implementierung von Konfigurationsoptionen wie authhosts. Versuche, solche Optionen zu verwenden, provozieren unbekannte Optionsfehler, wenn kein Authentifizierungscode in der Binärdatei enthalten ist. Die Authentifizierer werden mit derselben Syntax wie andere Treiber konfiguriert (siehe Kapitel 12). Wenn keine erforderlich ist, kann der gesamte siebte Abschnitt der Konfigurationsdatei weggelassen werden. Wenn mindestens ein Authentifizierer in der Binärdatei enthalten ist, können die Inhalte der Konfiguration durch Ausführen eines von jedem Authentifizierer erhalten werden, der sowohl Server - als auch Clientfunktionen haben kann. Um festzulegen, welche Optionen für welche gelten, werden die Präfixe Server und Client auf Optionsnamen verwendet, die für den Server bzw. die Clientfunktion spezifisch sind. Server - und Client-Funktionen sind deaktiviert, wenn keine ihrer Optionen gesetzt sind. Wenn ein Authentifizierer sowohl für Server - als auch für Client-Funktionen verwendet werden soll, ist eine einzelne Definition mit beiden Sätzen von Optionen erforderlich. Beispiel: Die Serveroption wird verwendet, wenn Exim als Server fungiert, und die Clientoptionen, wenn sie als Client fungiert. Die Beschreibungen der einzelnen Authentifikatoren sind in den nachfolgenden Kapiteln aufgeführt. Der Rest dieses Kapitels umfasst die generischen Optionen für die Authentifizierer, gefolgt von einer allgemeinen Diskussion über die Funktionsweise der Authentifizierung. Typ: string Default: unset Diese Option muss immer gesetzt sein. Sie gibt an, welcher der verfügbaren Authentifizierer verwendet werden soll. Typ: string Standard: unset Diese Option legt den Namen des Authentifizierungsmechanismus fest, den der Treiber implementiert und von dem er an der Außenwelt bekannt ist. Diese Namen sollten nur Großbuchstaben, Ziffern, Unterstriche und Bindestriche (RFC 2222), aber Exim in der Tat passt sie caselessly. Wenn publicname nicht gesetzt ist, wird standardmäßig der Name der Treiberinstanzen verwendet. Die öffentlichen Namen von Authentifizierern, die als Server konfiguriert sind, werden von Exim beworben, wenn sie einen EHLO-Befehl in der Reihenfolge empfangen, in der sie definiert sind. Wenn ein AUTH-Befehl empfangen wird, wird die Liste der Authentifizierer in der Definitionsreihenfolge nach einem gescannt, dessen öffentlicher Name mit dem im Befehl AUTH angegebenen Mechanismus übereinstimmt. Typ: string, expanded Default: unset Wenn ein Exim-Server erfolgreich einen Client authentifiziert, wird dieser String mit Daten aus der Authentifizierung erweitert und für alle eingehenden Nachrichten in der Variablen authenticatedid beibehalten. Es ist auch in den Protokolllinien für eingehende Nachrichten enthalten. Beispielsweise könnte eine Benutzer / Passwort-Authentifizierungskonfiguration den Benutzernamen beibehalten, der zur Authentifizierung verwendet wurde, und sich daraufhin während der Bereitstellung der Nachricht darauf beziehen. Typ: string, expanded Default: unset Diese Option ermöglicht es einem Server, authentifizierte Senderadressen zu verwerfen, die in den MAIL-Befehlen gemäß den konfigurierten Bedingungen geliefert werden. Wenn die Option deaktiviert ist, werden Adressen, die von der AUTH-Option der MAIL-Befehle bereitgestellt werden, immer akzeptiert. Andernfalls wird der Wert dieser Option erweitert, wenn ein authentifizierter Client einen AUTH-Wert für einen MAIL-Befehl liefert. Wenn es einen leeren String 0, no oder false ergibt, wird die AUTH-Adresse ignoriert. Wenn die Erweiterung einen anderen Wert ergibt, wird die AUTH-Adresse beibehalten und mit der Meldung weitergegeben. Während der Erweiterung ist die Adresse, die vom Schlüsselwort AUTH bereitgestellt wurde, in authenticatedsender verfügbar. Wenn alle Serverauthentifizierungsmechanismen konfiguriert sind, wird der Befehl SMTP AUTH von jedem verbundenen Client-Host akzeptiert. Wenn jedoch der Client-Host mit einem Element in authhosts übereinstimmt. Ist es erforderlich, sich selbst zu authentifizieren, bevor andere Befehle als HELO, EHLO, HELP, AUTH, NOOP, RSET oder QUIT akzeptiert werden. Sie können darauf bestehen, dass jeder Client, der den AUTH-Befehl zur Authentifizierung verwendet, zuerst eine TLS-verschlüsselte Session starten muss, indem authovertlshosts gesetzt wird. Zum Beispiel bedeutet, dass die gesamte Authentifizierung über sichere Sitzungen erfolgen muss. Einzelheiten zur TLS-Verschlüsselung finden Sie in Kapitel 38. Ein Client, der mit einem Element in hostauthacceptrelay übereinstimmt, ist berechtigt, auf eine beliebige Domäne zu übertragen, sofern es authentifiziert ist, unabhängig davon, ob es mit authhosts übereinstimmt. Mit anderen Worten, ein authentifizierter Client ist berechtigt, weiterzuleiten, wenn er entweder hostacceptrelay oder hostauthacceptrelay übereinstimmt. Während ein nicht authentifizierter Client-Host nur dann weiterleiten kann, wenn er mit hostacceptrelay übereinstimmt. Normalerweise bewirbt ein Exim-Server die Authentifizierungsmechanismen, die er als Reaktion auf einen beliebigen EHLO-Befehl unterstützt. Wenn jedoch authalwaysadvertise false gesetzt ist, bewirbt Exim die Verfügbarkeit des Befehls AUTH nur, wenn der aufrufende Host authhosts ist. Oder wenn es in hostauthacceptrelay und nicht in hostacceptrelay. In anderen Worten, es bewirbt nur, wenn der Host erforderlich ist, immer zu authentifizieren oder zu authentifizieren, um Relais. Andernfalls gibt Exim keine Werbung für AUTH, obwohl es immer bereit ist, es zu akzeptieren. Bestimmte E-Mail-Clients (z. B. Netscape) erfordern den Benutzer, einen Namen und ein Kennwort für die Authentifizierung anzugeben, wenn AUTH angekündigt wird, obwohl es nicht benötigt wird (der Host kann sich in hostacceptrelay befinden). Das Deaktivieren von authalwaysadvertise macht diese Clients unter diesen Umständen freundlicher und erlaubt es trotzdem, Kombinationen zu verwenden, wie beispielsweise ohne das Hostauthacceptrelay mit Ausnahmen zu füllen. Wenn eine Nachricht von einem authentifizierten Host empfangen wird, wird der Wert von receiveprotocol auf asmtp anstelle von esmtp gesetzt, und senderhostauthenticated enthält den Namen (nicht den öffentlichen Namen) des Authenticator-Treibers, der den Client erfolgreich authentifiziert hat, von dem die Nachricht empfangen wurde. Es ist leer, wenn keine erfolgreiche Authentifizierung erfolgte. Exims - bh-Option kann nützlich sein, um Server-Authentifizierungskonfigurationen zu testen. Die Daten für den AUTH-Befehl müssen verschlüsselt in Base 64 verschickt werden. Eine schnelle Möglichkeit, solche Daten zum Testen zu erzeugen, ist das folgende Perl-Skript: Dieses interpretiert sein Argument als Perl-String und kodiert es dann. Die Interpretation als Perl-String ermöglicht es, binäre Nullen, die für einige Arten von Authentifizierung erforderlich sind, in die Daten einzubeziehen. Beispielsweise kann eine Befehlszeile zum Ausführen dieses Skripts für solche Daten Beachten Sie die Verwendung von einfachen Anführungszeichen, um zu verhindern, dass die Shell die Backslashs interpretiert, sodass sie von Perl interpretiert werden können, um Zeichen anzugeben, deren Codewert null ist. Wenn Sie den Befehl mimencode installiert haben, ist ein anderer Weg, dies zu tun, den Befehl auszuführen (aber einige Versionen von echo erkennen die Option - n nicht). Warnung. Wenn eine der Zeichenfolgen mit einer Oktalziffer beginnt, müssen Sie nach dem führenden Backslash drei Nullen statt eins verwenden. Wenn Sie dies nicht tun, wird die Oktalziffer, die Ihren String startet, falsch als Teil des Codes für das erste Zeichen interpretiert. Wenn sich ein Client-Host authentifiziert hat, achtet Exim auf den AUTH-Parameter bei eingehenden SMTP-MAIL-Befehlen. Andernfalls akzeptiert er die Syntax, ignoriert aber die Daten. Wenn die Daten nicht die Zeichenfolge 6062 sind, wird sie als der authentifizierte Sender der Nachricht gesetzt. Der Wert ist während der Auslieferung in der authenticatedsender-Variable verfügbar und wird an andere Hosts weitergegeben, an denen Exim als Client authentifiziert. Verwechseln Sie diesen Wert nicht mit authenticatedid. Die eine vom Authentifizierungsprozess erhaltene Zeichenfolge ist und normalerweise keine vollständige E-Mail-Adresse ist. Der smtp-Transport hat eine Option namens authenticatehosts, wenn Exim mit Authentifizierungsunterstützung erstellt wird. Wenn der SMTP-Transport eine Verbindung zu einem Server herstellt, der Unterstützung für die Authentifizierung ankündigt und auch einen Eintrag in authenticatehosts übereinstimmt. Exim (als Client) versucht, sich wie folgt zu authentifizieren: Für jeden als Client konfigurierten Authentifizierer durchsucht er die vom Server angekündigten Authentifizierungsmechanismen, deren Name mit dem öffentlichen Namen des Authenticators übereinstimmt. Wenn er einen findet, der übereinstimmt, führt er den Authenticators-Clientcode aus. Die Variablen host und hostaddress stehen für beliebige Zeichenkettenerweiterungen zur Verfügung, die der Client ausführen könnte. Sie sind auf den Servernamen und die IP-Adresse eingestellt. Wenn eine Erweiterung fehlschlägt, wird der Authentifizierungsversuch abgebrochen. Andernfalls führt ein Ausfallversagen zu einer Verschiebung der Lieferung. Wenn das Ergebnis ein temporärer Fehler oder ein Timeout ist, versucht Exim, die Nachricht an den Host zu senden. Es wird später noch einmal versuchen. Wenn es irgendwelche Backup-Hosts zur Verfügung, werden sie in der üblichen Weise versucht. Wenn die Antwort auf die Authentifizierung ein permanenter Fehler ist (5xx-Code), führt Exim die Suche nach der Liste der Authentifizierer weiter. Wenn alle Authentifizierungsversuche dauerhafte Fehler liefern oder wenn es keine Versuche gibt, weil keine Mechanismen übereinstimmen, versucht es, die Nachricht nicht authentifiziert zu übermitteln. Wenn Exim sich auf einem Remoteserver authentifiziert hat, fügt es den AUTH-Parameter den von ihm gesendeten MAIL-Befehlen hinzu, wenn er einen authentifizierten Absender für die Nachricht erhalten hat. Wenn ein lokaler Prozess Exim aufruft, um eine Nachricht zu senden, wird die Absenderadresse, die aus dem Anmeldenamen und der qualifydomain erstellt wird, als authentifiziert behandelt. Home Download-Dokumentation Mailinglisten Wiki Bugs Credits Der Authentifizierungsabschnitt der Exims-Laufzeitkonfiguration betrifft die SMTP-Authentifizierung. Diese Einrichtung ist eine Erweiterung des SMTP-Protokolls, beschrieben in RFC 2554, die es einem Client-SMTP-Host ermöglicht, sich auf einem Server zu authentifizieren. Dies ist ein üblicher Weg für einen Server, um Clients zu erkennen, die es als Relais verwenden dürfen. Die SMTP-Authentifizierung ist für die Übertragung von E-Mails zwischen Servern, die keine leitende Verbindung zueinander haben, nicht von Bedeutung. Ganz kurz, wie die SMTP-Authentifizierung funktioniert, ist wie folgt: Der Server bewirbt eine Anzahl von Authentifizierungsmechanismen als Antwort auf den EHLO-Befehl des Clients. Der Client gibt einen AUTH-Befehl aus und benennt einen bestimmten Mechanismus. Der Befehl kann optional einige Authentifizierungsdaten enthalten. Der Server kann eine oder mehrere Herausforderungen ausgeben. Auf die der Kunde entsprechende Antworten senden muss. In einfachen Authentifizierungsmechanismen sind die Herausforderungen nur die Eingabe von Benutzernamen und Passwörtern. Der Server muss keine Herausforderungen in einigen Mechanismen stellen die relevanten Daten können alle mit dem AUTH-Befehl übertragen werden. Der Server akzeptiert oder verweigert die Authentifizierung. Wenn die Authentifizierung erfolgreich ist, kann der Client optional die AUTH-Option auf dem MAIL-Befehl verwenden, um einen authentifizierten Absender in nachfolgenden Mail-Transaktionen zu übergeben. Die Authentifizierung dauert für den Rest der SMTP-Verbindung. Wenn die Authentifizierung fehlschlägt, kann der Client aufgeben, oder er kann einen anderen Authentifizierungsmechanismus ausprobieren, oder er kann versuchen, Mail über die nicht authentifizierte Verbindung zu übertragen. Wenn Sie einen Client einrichten und wissen möchten, welche Authentifizierungsmechanismen der Server unterstützt, können Sie mit Telnet eine Verbindung zu Port 25 (dem SMTP-Port) auf dem Server herstellen und einen EHLO-Befehl ausgeben. Die Antwort darauf enthält die Liste der unterstützten Mechanismen. Beispiel: Die zweitletzte Zeile dieses Beispielausgangs zeigt an, dass der Server die Authentifizierung mit dem PLAIN-Mechanismus unterstützt. In Exim werden die verschiedenen Authentifizierungsmechanismen durch Angeben von Authentifizierungstreibern konfiguriert. Wie die Router und Transporte, welche Authenticatoren in der Binärdatei enthalten sind, wird durch Build-Time-Definitionen gesteuert. Die folgenden sind derzeit verfügbar, indem Sie in Local / Makefile. beziehungsweise. Der erste unterstützt den CRAM-MD5-Authentifizierungsmechanismus (RFC 2195) und der zweite eine Schnittstelle zur Cyrus SASL-Authentifizierungsbibliothek. Die dritte ist eine Schnittstelle zum Dovecots-Authentifizierungssystem, die die Arbeit über eine Socket-Schnittstelle delegiert. Der vierte bietet eine Schnittstelle zur GNU SASL-Authentifizierungsbibliothek, die Mechanismen, aber typischerweise keine Datenquellen bereitstellt. Der Fünfte bietet direkten Zugriff auf Heimdal GSSAPI, für Kerberos ausgerichtet, unterstützt aber die Einstellung eines Server-Keytabs. Der sechste kann so konfiguriert werden, dass er den PLAIN-Authentifizierungsmechanismus (RFC 2595) oder den LOGIN-Mechanismus unterstützt, der nicht formal dokumentiert ist, sondern von mehreren MUAs verwendet wird. Der siebte Authenticator unterstützt Microsofts Secure Password Authentication Mechanismus. Das achte ist ein Exim-Authentifizierer, aber nicht ein SMTP-Stattdessen kann es Informationen aus einer TLS-Verhandlung verwenden. Die Authentifizierer werden mit derselben Syntax wie andere Treiber konfiguriert (siehe Abschnitt 6.22). Wenn keine Authentifizierer erforderlich sind, muss kein Authentifizierungsabschnitt in der Konfigurationsdatei vorhanden sein. Jeder Authentifizierer kann grundsätzlich sowohl Server - als auch Client-Funktionen haben. Wenn Exim SMTP-Mail empfängt, fungiert es als Server, wenn es Nachrichten über SMTP sendet und als Client fungiert. Authenticator-Konfigurationsoptionen werden für die Verwendung unter diesen Umständen bereitgestellt. Um festzulegen, welche Optionen für welche Situation gelten, werden die Präfixe Server und Client auf Optionsnamen verwendet, die für den Server bzw. die Clientfunktion spezifisch sind. Server - und Client-Funktionen sind deaktiviert, wenn keine ihrer Optionen gesetzt sind. Wenn ein Authentifizierer sowohl für Server - als auch für Client-Funktionen verwendet werden soll, ist eine einzelne Definition mit beiden Sätzen von Optionen erforderlich. Beispiel: Die Serveroption wird verwendet, wenn Exim als Server fungiert, und die Clientoptionen, wenn sie als Client fungiert. Die Beschreibungen der einzelnen Authentifikatoren sind in den nachfolgenden Kapiteln aufgeführt. Der Rest dieses Kapitels umfasst die generischen Optionen für die Authentifizierer, gefolgt von der allgemeinen Diskussion über die Art und Weise, wie die Authentifizierung in Exim funktioniert. Vorsicht: die Bedeutung von auth1, auth2. Variiert je nach Fahrer und per-Mechanismus. Bitte lesen Sie sorgfältig, um zu ermitteln, welche Variablen Account-Labels wie Usercodes enthalten und welche Passwörter oder andere authentifizierende Daten enthalten. Beachten Sie, dass einige Mechanismen zwei verschiedene Identifikatoren für Konten unterstützen: die Authentifizierungs-ID und die Berechtigungs-ID. Die Kontraktionen authn und authz werden häufig angetroffen. Die amerikanische Schreibweise ist hier Standard. Konzeptionell können Authentifizierungsdaten wie Passwörter an den Identifizierer gebunden werden, der für die Authentifizierung von Servern verwendet wird, können Regeln haben, die es einem Benutzer ermöglichen, als zweiter Benutzer zu fungieren, so dass nach dem Login die Sitzung so behandelt wird, als ob der zweite Benutzer angemeldet war Ist die Berechtigungs-ID. Eine robuste Konfiguration könnte bestätigen, dass das authz-Feld leer ist oder mit dem authn-Feld übereinstimmt. Oft wird das einfach ignoriert. Die authn kann als verifizierte Daten betrachtet werden, die authz als eine unbestätigte Anfrage, die der Server wählen könnte, zu ehren. Ein Realm ist eine Textzeichenfolge, in der Regel ein Domänenname, der von einem Server einem Client zur Auswahl eines Kontos und Anmeldeinformationen zur Verfügung gestellt wird. In einigen Mechanismen sind der Client und der Server nachvollziehbar auf dem Gebiet zuständig, aber Kunden können typischerweise nicht das Reich als sichere Daten behandeln, um blind vertrauenswürdig zu sein. 1. Generische Optionen für Authenticators12.5. Datei - und Archivierungsbefehle Das Standard-Archivierungsprogramm UNIX. 1 Ursprünglich ein Tape ARchiving Programm, hat es sich zu einem Allzweckpaket entwickelt, das alle Arten der Archivierung mit allen Arten von Zielgeräten, von Bandlaufwerken bis zu regulären Dateien bis hin zu stdout (siehe Beispiel 3-4), abwickeln kann. GNU tar wurde gepatched, um verschiedene Komprimierungsfilter zu akzeptieren, wie z. B. tar czvf archivename. tar. gz. Die alle Dateien in einem Verzeichnisbaum mit Ausnahme von dotfiles im aktuellen Arbeitsverzeichnis (PWD) rekursiv archiviert und gizipiert. 2 Einige nützliche tar-Optionen: - c create (ein neues Archiv) - x extrahieren (Dateien aus vorhandenem Archiv) --delete delete (Dateien aus vorhandenem Archiv) Diese Option funktioniert nicht auf Magnetbandgeräten. - r anhängen (Dateien an vorhandene Archive) - A anhängen (tar-Dateien an vorhandenes Archiv) - t Liste (Inhalt des vorhandenen Archivs) - u update archiv - d Vergleichsarchiv mit angegebenem Dateisystem - z gzip das Archiv (komprimieren oder unkomprimieren, je nachdem Ob es mit der Option - c oder - x kombiniert wird - j bzipip das Archiv Es kann schwierig sein, Daten aus einem beschädigten gzipped tar-Archiv wiederherzustellen. Erstellen Sie bei der Archivierung wichtiger Dateien mehrere Sicherungen. Shell-Archivierung Dienstprogramm. Die Dateien in einem Shell-Archiv werden ohne Komprimierung verkettet, und das resultierende Archiv ist im Wesentlichen ein Shell-Skript mit / bin / sh-Header und enthält alle notwendigen nichtarchivierenden Befehle. Shar-Archive immer noch in Internet-Newsgroups, aber ansonsten shar wurde ziemlich gut ersetzt durch tar / gzip. Der Befehl "unshar" entpackt Shar-Archive. Erstellungs - und Manipulationsdienstprogramm für Archive, das hauptsächlich für Binärobjektdateibibliotheken verwendet wird. Der Red Hat-Paket-Manager. Oder rpm Utility bietet einen Wrapper für Quell - oder Binärarchive. Es enthält unter anderem Befehle für die Installation und Überprüfung der Integrität von Paketen. Eine einfache rpm - i packagename. rpm reicht in der Regel aus, um ein Paket zu installieren, obwohl es noch viele weitere Optionen gibt. Rpm - qa gibt eine vollständige Liste aller installierten rpm-Pakete auf einem gegebenen System. Ein rpm - qa-Paketname listet nur die Pakete auf, die dem Paketnamen entsprechen. Bash rpm - qa redhat-logos-1.1.3-1 glibc-2.2.4-13 cracklib-2.7-12 dosfstools-2.7-1 gdbm-1.8.0-10 ksymoops-2.4.1-1 mktemp-1.5-11 perl -5.6.0-17 reiserfs-utils-3.x.0j-2. Bash rpm - qa docbook-utils docbook-utils-0.6.9-2 bash rpm - qa docbook grep docbook-dtd31-sgml-1.0-10 docbook-style-dsssl-1.64-3 docbook-dtd30-sgml-1.0-10 Docbook-dtd40-sgml-1.0-11 docbook-utils-pdf-0.6.9-2 docbook-dtd41-sgml-1.0-10 docbook-utils-0.6.9-2 Dieser spezialisierte Archivierungskopierbefehl (copyi nput und o utput) Wird selten mehr gesehen, nachdem er durch tar / gzip ersetzt wurde. Es hat immer noch seine Verwendungen, wie das Verschieben eines Verzeichnisbaums. Beispiel 12-27. Verwenden von cpio zum Verschieben eines Verzeichnisbaums / bin / bash Kopieren eines Verzeichnisbaums mit cpio. Vorteile der Verwendung von cpio: Geschwindigkeit des Kopierens. Es ist schneller als Teer mit Rohren. Gut geeignet für das Kopieren von speziellen Dateien (benannte Pipes, etc.), dass cp kann ersticken. ARGS2 EBADARGS65 if - ne ARGS then echo Verwendung: basename 0 source destination exit EBADARGS fi source1 destination2 Quelle finden - depth cpio - admvp destination Lesen Sie die find - und cpio man-Seite, um diese Optionen zu entschlüsseln. Übung: -------- Fügen Sie Code hinzu, um den Exit-Status () der find cpio-Pipe zu überprüfen und entsprechende Fehlermeldungen auszugeben, falls etwas schief gelaufen ist. Exit 0 Dieser Befehl extrahiert ein cpio-Archiv aus einer rpm-Datei. Beispiel 12-28. Auspacken eines rpm Archivs / bin / bash de-rpm. sh: Entpacken Sie ein rpm Archiv. Der Parameter rpm archive muss als Argument angegeben werden. TEMPFILE. cpio Tempfile mit eindeutigem Namen. Ist Prozess-ID des Skripts. Rpm2cpio 60 1 62 TEMPFILE Konvertiert rpm archiv in das cpio-Archiv. Cpio --make-verzeichnisse - F TEMPFILE - i Entpackt das cpio-Archiv. Rm - f TEMPFILE Löscht das cpio-Archiv. Exit 0 Übung: Add check, ob 1) Ziel-Datei existiert und 2) es ist wirklich ein rpm-Archiv. Hinweis: parse Ausgabe des Dateibefehls. Das Standard-GNU / UNIX-Komprimierungsprogramm, das die untergeordnete und proprietäre Komprimierung ersetzt. Der entsprechende Dekompressionsbefehl ist gunzip. Was das Äquivalent von gzip - d ist. Der zcat-Filter dekomprimiert eine gepackte Datei in stdout. Wie möglich in eine Rohrleitung oder Umleitung. Dies ist in der Tat ein cat-Befehl, der auf komprimierten Dateien arbeitet (einschließlich Dateien, die mit dem älteren Komprimierungsprogramm verarbeitet werden). Der Befehl zcat entspricht gzip - dc. Auf einigen kommerziellen UNIX-Systemen ist zcat ein Synonym für uncompress - c. Und funktioniert nicht auf gzip-Dateien. Siehe auch Beispiel 7-7. Eine alternative Komprimierung Dienstprogramm, in der Regel effizienter (aber langsamer) als gzip. Insbesondere auf großen Dateien. Der entsprechende Dekomprimierungsbefehl ist bunzip2. Neuere Versionen von tar wurden mit bzip2-Unterstützung gepatched. Dies ist ein älteres, proprietäres Komprimierungsprogramm, das in kommerziellen UNIX-Distributionen gefunden wird. Die effizientere gzip hat es weitgehend ersetzt. Linux-Distributionen enthalten im Allgemeinen eine Komprimierung, die für Kompatibilität kompatibel ist, obwohl gunzip Dateien mit Dateien komprimieren kann. Der Befehl znew wandelt komprimierte Dateien in gezippte um. Noch ein Kompressionsprogramm, ein Filter, der nur auf sortierten ASCII-Wortlisten arbeitet. Es verwendet die Standardaufrufsyntax für einen Filter, sq 60 input-file 62 output-file. Schnell, aber nicht annähernd so effizient wie gzip. Das entsprechende Dekompressionsfilter ist ungq. Aufgerufen wie sq. Die Ausgabe von sq kann zu gzip für weitere Komprimierung geleitet werden. Cross-Plattform-Datei-Archivierung und Komprimierung Utility kompatibel mit DOS pkzip. exe. Zip-Archive scheinen ein akzeptableres Medium des Austausches im Internet zu sein als Tarballs. Unarc. Unarj Unrar Diese Linux-Dienstprogramme ermöglichen das Entpacken von Archiven, die mit dem DOS arc. exe komprimiert wurden. Arj. exe. Und rar. exe-Programme. Ein Dienstprogramm zum Identifizieren von Dateitypen. Die Befehlsdatei Dateiname gibt eine Dateispezifikation für Dateiname zurück. Wie ASCII-Text oder Daten. Es verweist auf die magischen Zahlen in / usr / share / magic gefunden. / Etc / magic. Oder / usr / lib / magic. Abhängig von der Linux / UNIX-Distribution. Die Option - f bewirkt, dass die Datei im Batchmodus ausgeführt wird, um aus einer bestimmten Datei eine Liste der zu analysierenden Dateinamen zu lesen. Die Option - z erzwingt bei Verwendung auf einer komprimierten Zieldatei den Versuch, den unkomprimierten Dateityp zu analysieren. Bash-Datei test. tar. gz test. tar. gz: gzip komprimierte Daten, deflated, zuletzt geändert: So Sep 16 13:34:51 2001, os: Unix bash-Datei test-test. tar. gz test. tar. gz: GNU tar-Archiv (gzip komprimierte Daten, deflationiert, zuletzt geändert: So Sep 16 13:34:51 2001, os: Unix) Finden Sie sh und Bash-Scripts in einem bestimmten Verzeichnis: DIRECTORY / usr / local / bin KEYWORDBourne Bourne und Bourne-Again Shell-Skriptdatei DIRECTORY / fgrep KEYWORD Ausgabe: / usr / local / bin / brennen-cd: Bourne-Wieder Shell-Skripttext ausführbare Datei / usr / local / bin / Cassette. sh: Bourne-Shell-Skripttext ausführbare Datei / usr / local / bin / copy-cd: Bourne-Again-Shell-Skripttext ausführbar. Beispiel 12-29. Strippen von Kommentaren aus C-Programmdateien / bin / bash strip-comment. sh: Streicht die Kommentare (/ COMMENT /) in einem C-Programm aus. ENOARGS0 EARGERROR66 EWRONGFILETYPE67 if - eq ENOARGS then echo Verwendung: basename 0 C-Programm-Datei 62382 Fehlermeldung an stderr. Exit EARGERROR fi Test für korrekten Dateityp. Typdatei 1 awk Datei 1 Echos Dateityp. Dann entfernt awk das erste Feld, den Dateinamen. Dann wird das Ergebnis in den Variablentyp eingegeben. CorrecttypeASCII C Programmtext, wenn type correcttype dann echo echo Dieses Skript funktioniert nur auf C-Programmdateien. Echo Exit EWRONGFILETYPE fi Viel kryptischen sed Skript: -------- sed /// d /.//d 1 -------- Leicht zu verstehen, wenn Sie mehrere Stunden, um sed Grundlagen zu lernen. Notwendigkeit, eine weitere Linie dem sed Skript hinzuzufügen, um mit Fall umzugehen, in dem Zeile des Codes einen Kommentar hat, der ihm auf derselben Zeile folgt. Dies bleibt als nicht-triviale Übung übrig. Außerdem löscht der obige Code nichtkommentierte Zeilen mit einem / - kein erwünschtes Ergebnis. Ausfahrt 0 ------------------------------------------------- ---------------- Code unterhalb dieser Zeile wird nicht ausgeführt, weil der Ausgang 0 oben. Stephane Chazelas schlägt folgende Alternative vor: use () WEIRDecho - n - e 377 oder WEIRD377 - eq 1 Anwendungsfalldatei 1 im C-Programmtext) sed - es / gs / g 1 tr 377n n377 sed - ne pn tr - dn tr 377 N) usage esac Dies ist immer noch täuschen durch Dinge wie: printf (/) oder / / buggy Embedded Kommentar / Um alle Sonderfälle (Kommentare in Zeichenfolgen, Kommentare in Zeichenfolge, wo es eine C-Parser (mit lex oder yacc vielleicht). Exit 0, wobei command-xxx den vollständigen Pfad zu command-xxx gibt. Dies ist nützlich, um herauszufinden, ob ein bestimmter Befehl oder Dienstprogramm auf dem System installiert ist. Bash readlink / usr / bin / awk. /../bin/gawk Verwenden Sie den Befehl string, um druckbare Zeichenfolgen in einer Binärdatei oder Datendatei zu finden. Es werden die Sequenzen der druckbaren Zeichen in der Zieldatei aufgelistet. Dies könnte nützlich für eine schnelle n schmutzige Untersuchung eines Core Dump oder für das Betrachten einer unbekannten grafischen Bilddatei (Strings Bilddatei mehr zeigen könnte etwas wie JFIF, die die Datei als jpeg Grafik zu identifizieren). In einem Skript würden Sie wahrscheinlich die Ausgabe von Zeichenfolgen mit grep oder sed analysieren. Siehe Beispiel 10-7 und Beispiel 10-9. Beispiel 12-31. Ein verbesserter Strings-Befehl / bin / bash wstrings. sh: word-strings (Befehl enhanced strings) Dieses Skript filtert die Ausgabe von Strings, indem es sie gegen eine Standard-Wortlistendatei prüft. Das eliminiert Kauderwelsch und Rauschen und gibt nur erkannte Wörter aus. Standardprüfung für Script-Argumente ARGS1 EBADARGS65 ENOFILE66 if - ne ARGS then echo Verwendung: basename 0 Dateiname exit EBADARGS fi if. - f 1 Prüfen Sie, ob die Datei existiert. Dann echo Datei 1 existiert nicht. Exit ENOFILE fi MINSTRLEN3 Minimale Zeichenkettenlänge. WORDFILE / usr / share / dict / linux. word Wörterbuch-Datei. Kann eine andere Wortlistendatei mit einem Wort pro Zeile angeben. Wliststrings 1 tr A-Z a-z tr: Raum: Z tr - cs: alpha: Z tr - s 173-377 Ztr Z Übersetzen der Ausgabe des Zeichenkettenbefehls mit mehreren Durchgängen von tr. Tr A-Z a-z wird in Kleinbuchstaben konvertiert. Tr: space: konvertiert Leerzeichen in Zs. Tr - cs: alpha: Z wandelt nicht-alphabetische Zeichen in Zs um und drückt mehrere aufeinanderfolgende Zs. Tr - s 173-377 Z wandelt alle Zeichen hinter z in Zs und drückt mehrere aufeinanderfolgende Zs, die alle seltsamen Zeichen loswerden, die die vorherige Übersetzung nicht bewältigen konnte. Schließlich wandelt tr Z alle Zs in den Whitespace um, der in der folgenden Schleife als Worttrennzeichen zu sehen ist. Beachten Sie die Technik der Zuführung der Ausgabe von tr zurück zu sich selbst, aber mit verschiedenen Argumenten und / oder Optionen auf jedem Pass. Für Wort in wlist Wichtig: wlist darf hier nicht zitiert werden. Wlist funktioniert nicht. Warum nicht strlen String Länge. If strlen - lt MINSTRLEN Überspringen Sie kurze Zeichenfolgen. Dann fortsetzen fi grep - Fw Wort WORDFILE Spiel nur ganze Wörter. Fixed Strings und ganze Worte Optionen. Abgeschlossen. Flexible Datei Vergleich Dienstprogramm. Es vergleicht die Zieldateien Zeile für Zeile nacheinander. In manchen Anwendungen, wie dem Vergleichen von Wortwörterbüchern, kann es hilfreich sein, die Dateien durch sort und uniq zu filtern, bevor sie zu diff geleitet werden. Diff Datei-1 Datei-2 gibt die Zeilen in den Dateien, die sich unterscheiden, mit Carets zeigen, welche Datei jede einzelne Zeile gehört. Die - side-by-side-Option für diff-Ausgänge, die jeweils Datei, Zeile für Zeile, in getrennten Spalten verglichen, wobei nicht übereinstimmende Zeilen markiert wurden. Die Optionen - c und - u machen die Ausgabe des Befehls ebenfalls leichter zu interpretieren. Es gibt verschiedene schicke Frontends für diff. Wie z. B. sdiff. Wdiff Xdiff. Und mgdiff. Der Diff-Befehl gibt einen Exit-Status von 0 zurück, wenn die verglichenen Dateien identisch sind und 1, wenn sie sich unterscheiden. Dies ermöglicht die Verwendung von diff in einem Testkonstrukt innerhalb eines Shell-Skripts (siehe unten). Ein allgemeiner Gebrauch für diff erzeugt Differenzdateien, die mit Patch verwendet werden sollen. Die Option - e gibt Dateien aus, die für Ed - oder Ex-Skripte geeignet sind. Patch Flexible Versionsverwaltung. Eine Differenzdatei, die durch diff erzeugt wird. Patch eine frühere Version eines Pakets auf eine neuere Version aktualisieren kann. Es ist viel bequemer, eine relativ kleine Diff-Datei zu verteilen als der gesamte Körper eines neu überarbeiteten Paketes. Kernel-Patches sind die bevorzugte Methode zur Verteilung der häufigen Releases des Linux-Kernels. Patch - p1 60patch-file Nimmt alle Änderungen in der Patch-Datei auf und wendet sie auf die darin referenzierten Dateien an. Das Upgrade auf eine neuere Version des Pakets. Patching des Kernels: cd / usr / src gzip - cd patchXX. gz patch - p0 Aktualisieren der Kernel-Quelle mit Patch. Aus dem Linux-Kernel docs README, von anonymer Autor (Alan Cox). Eine erweiterte Version von diff, die drei Dateien zu einem Zeitpunkt vergleicht. Dieser Befehl gibt bei erfolgreicher Ausführung einen Exit-Wert von 0 zurück, liefert aber leider keine Informationen über die Ergebnisse des Vergleichs. Bash diff3 file-1 file-2 file-3 1: 1c Dies ist Zeile 1 von file-1. 2: 1c Dies ist Zeile 1 von Datei-2. 3: 1c Dies ist Zeile 1 von Datei-3 Vergleichen und / oder bearbeiten Sie zwei Dateien, um sie in eine Ausgabedatei zusammenzuführen. Wegen seiner interaktiven Natur würde dieser Befehl wenig Gebrauch in einem Index finden. Der Befehl cmp ist eine einfachere Version von diff. über. Während diff die Unterschiede zwischen zwei Dateien angibt, zeigt cmp lediglich, an welchem ​​Punkt sie sich unterscheiden. Wie Diff. Cmp gibt einen Exit-Status von 0 zurück, wenn die verglichenen Dateien identisch sind und 1, wenn sie sich unterscheiden. Dies ermöglicht die Verwendung in einem Testkonstrukt innerhalb eines Shell-Skripts. Beispiel 12-32. Mit cmp vergleichen Sie zwei Dateien innerhalb eines Skripts. / Bin / bash ARGS2 Zwei args zu script erwartet. EBADARGS65 EUNREADABLE66 if - ne ARGS then echo Verwendung: basename 0 file1 file2 exit EBADARGS fi if. - r & sub1; - r 2 then echo Die beiden zu vergleichenden Dateien müssen vorhanden und lesbar sein. Exit EUNREADABLE fi cmp 1 2 3862 / dev / null / dev / null vergibt die Ausgabe des Befehls cmp. cmp - s 1 2 has same result (-s silent flag to cmp) Thank you Anders Gustavsson for pointing this out. Also works with diff, i. e. diff 1 2 3862 /dev/null if - eq 0 Test exit status of cmp command. then echo File 1 is identical to file 2. else echo File 1 differs from file 2. fi exit 0 There have been reports that the 128-bit md5sum can be cracked, so the more secure 160-bit sha1sum is a welcome new addition to the checksum toolkit. bash md5sum testfile e181e2c8720c60522c4c4c981108e367 testfile bash sha1sum testfile 5d7425a9c08a66c3177f1e31286fa40986ffc996 testfile Securely erase a file by overwriting it multiple times with random bit patterns before deleting it. This command has the same effect as Example 12-55. but does it in a more thorough and elegant manner. This is one of the GNU fileutils . Advanced forensic technology may still be able to recover the contents of a file, even after application of shred . Encoding and Encryption This utility encodes binary files into ASCII characters, making them suitable for transmission in the body of an e-mail message or in a newsgroup posting. This reverses the encoding, decoding uuencoded files back into the original binaries. Example 12-35. Uudecoding encoded files /bin/bash Uudecodes all uuencoded files in current working directory. lines35 Allow 35 lines for the header (very generous). for File in Test all the files in PWD. do search1head - lines File grep begin wc - w search2tail - lines File grep end wc - w Uuencoded files have a begin near the beginning, and an end near the end. if search1 - gt 0 then if search2 - gt 0 then echo uudecoding - File - uudecode File fi fi done Note that running this script upon itself fools it into thinking it is a uuencoded file, because it contains both begin and end. Exercise: -------- Modify this script to check each file for a newsgroup header, and skip to next if not found. exit 0 The fold - s command may be useful (possibly in a pipe) to process long uudecoded text messages downloaded from Usenet newsgroups. The mimencode and mmencode commands process multimedia-encoded e-mail attachments. Although mail user agents (such as pine or kmail ) normally handle this automatically, these particular utilities permit manipulating such attachments manually from the command line or in a batch by means of a shell script. At one time, this was the standard UNIX file encryption utility. 3 Politically motivated government regulations prohibiting the export of encryption software resulted in the disappearance of crypt from much of the UNIX world, and it is still missing from most Linux distributions. Fortunately, programmers have come up with a number of decent alternatives to it, among them the authors very own cruft (see Example A-4 ). Create a temporary file 4 with a unique filename. When invoked from the command line without additional arguments, it creates a zero-length file in the /tmp directory. bash mktemp /tmp/tmp. zzsvql3154 PREFIXfilename tempfilemktemp PREFIX. XXXXXX Need at least 6 placeholders in the filename template. If no filename template supplied, tmp. XXXXXXXXXX is the default. echo tempfile name tempfile tempfile name filename. QA2ZpY or something similar. Creates a file of that name in the current working directory with 600 file permissions. A umask 177 is therefore unnecessary, but its good programming practice anyhow. Utility for building and compiling binary packages. This can also be used for any set of operations that is triggered by incremental changes in source files. The make command checks a Makefile. a list of file dependencies and operations to be carried out. Special purpose file copying command, similar to cp. but capable of setting permissions and attributes of the copied files. This command seems tailormade for installing software packages, and as such it shows up frequently in Makefiles (in the make install. section). It could likewise find use in installation scripts. This utility, written by Benjamin Lin and collaborators, converts DOS-formatted text files (lines terminated by CR-LF) to UNIX format (lines terminated by LF only), and vice-versa. The ptx targetfile command outputs a permuted index (cross-reference list) of the targetfile. This may be further filtered and formatted in a pipe, if necessary. Pagers that display a text file or stream to stdout. one screenful at a time. These may be used to filter the output of stdout. or of a script. An interesting application of more is to test drive a command sequence, to forestall potentially unpleasant consequences. ls /home/bozo awk more Testing the effect of the following (disastrous) command line: ls /home/bozo awk sh Hand off to the shell to execute.


Comments

Popular posts from this blog

Forex Scalping Strategy Forum