Zum Hauptinhalt Zur Navigation

Skriptsprachen: Gawk 4.0.0 läuft im Sandkasten

Die vom GNU-Projekt entwickelte Skriptsprache Gawk 4.0.0 kann in einem abgesicherten Modus ausgeführt werden, etwa um heikle Textdateien vom System fernzuhalten. Die Awk-Abwandlung verwendet künftig keine PIDs mehr, sondern Procinfo.
/ Jörg Thoma
1 Kommentare News folgen (öffnet im neuen Fenster)
Bild: GNU

Gawk 4.0.0 hat gegenüber der Vorgängerversion 3.1.8 zahlreiche Änderungen erhalten, darunter etliche, die die Posix-Implementierung betreffen. Zusätzlich erhält Gawk eine Sandbox-Funktion, in der unsichere oder heikle Textdateien bearbeitet werden können, ohne dass sie das Gesamtsystem gefährden könnten. Zudem verzichtet Gawk künftig auf Prozess-Identifizierer und Geräte-Dateien, sondern klinkt sich über Procinfo in das System ein.

Der Wechsel zu Posix in einigen Komponenten hat wesentliche Änderungen zur Folge. Im Posix-Modus verwendet Gawk beispielsweise strcoll und wcscroll für den Zeichenvergleich. Zudem verwenden sub und gsub die Applikationsschnittstelle nach POSIX.1-2008. Künftig werden Bereiche in Form von [d-h] in C-Locale ausgewertet, auch wenn der Parameter --posix gesetzt ist.

Sandbox-Funktion für heikle Dateien

Arrays können in weitere Arrays eingefügt werden. Zudem unterstützt Gawk die Regeln BEGINFILE und ENDFILE . Damit lassen sich beispielsweise Textdateien auf Lesbarkeit überprüfen, ohne dass eine entsprechende Fehlermeldung das Skript endgültig abbrechen lässt. Gawk 4.0.0 erkennt fortan die Escape-Sequenzen /s und /S in regulären Ausdrücken. Die Funktion split() akzeptiert als viertes Argument ein Array mit Separatoren.

In der Sandbox-Umgebung ist der Aufruf system() deaktiviert. Das soll verhindern, dass unsichere Textdateien Schaden am System anrichten. Außerdem deaktiviert Gawk die Ein- und Ausgabe über Getline, Print oder Printf.

Die Skriptsprache Gawk für die Auswertung und Bearbeitung von Textdateien steht in Version 4.0.0 als Quellcode zum Download(öffnet im neuen Fenster) bereit. Die Liste aller Änderungen haben die Entwickler in einer Changelog-Datei(öffnet im neuen Fenster) zusammengetragen. Einige Einträge verweisen auf die ausführlichere Dokumentation(öffnet im neuen Fenster) , die bereits aktualisiert wurde.


Relevante Themen