Einführung / Konfiguration des FirstSpirit-Servers / Konfigurationsdateien (FirstSpirit-Server) / Konfiguration der Ausführungsbeschränkungen (fs-exec.conf)
Konfiguration der Ausführungsbeschränkungen (fs-exec.conf)
| Inhaltsverzeichnis |
Die Datei fs-exec.conf befindet sich unter <FirstSpirit-Server>/conf/ und enthält die Konfiguration der Ausführungsbeschränkungen (Execution Constraints) für Skripte und Vorlagen. Diese Beschränkungen schützen den Server vor unbeabsichtigten oder schädlichen Operationen, die aus Skript- oder Vorlagen-Code ausgeführt werden könnten.
Standardmäßig ist die Datei fs-exec.conf nicht im Verzeichnis conf vorhanden. Der Server verwendet in diesem Fall die intern hinterlegten Standardwerte. Erst wenn eine individuelle Konfiguration gewünscht ist, muss die Datei manuell im Verzeichnis <FirstSpirit-Server>/conf/ angelegt werden. Es brauchen dabei nur die Werte angegeben werden, die von den Standardwerten abweichen sollen — alle nicht angegebenen Werte werden aus der Standardkonfiguration übernommen.
Änderungen an der Datei fs-exec.conf werden zur Laufzeit erkannt und automatisch neu eingelesen. Ein Neustart des Servers ist nicht erforderlich.
Die Ausführungsbeschränkungen können über den Parameter execControlConstraints in der fs-server.conf vollständig deaktiviert werden (siehe Bereich: Server).
Constraints
Es stehen drei Einschränkungen zur Verfügung, die jeweils unabhängig voneinander aktiviert oder deaktiviert werden können:
- RuntimeExitConstraint: Verhindert Aufrufe von System.exit(), System.halt(), Runtime.exit() und Runtime.halt(). Dadurch wird verhindert, dass Skripte oder Vorlagen den gesamten Server-Prozess beenden können.
- ServerFileConstraint: Schränkt den Zugriff auf Dateien im FirstSpirit-Server-Dateisystem ein. Es wird eine Blacklist verwendet: Dateien, die einem der konfigurierten Muster entsprechen, sind für den Zugriff gesperrt.
Zusätzlich können zu schützende Dateien mit folgendem Muster konfiguriert werden:
ServerFileConstraint.matcher.NN=<Pfad in Glob Syntax>
Dabei sollten für NN Zahlen ab 20 verwendet werden. - ProcessStartConstraint: Schränkt die Erzeugung externer Prozesse ein (z. B. über ProcessBuilder oder ProcessAgent). Es wird eine Whitelist verwendet: Nur ausführbare Dateien, deren Pfad einem der konfigurierten Muster entspricht, dürfen gestartet werden.
ProcessStartConstraint.matcher.NN=<Pfad in Glob Syntax>
Dabei sollten für NN Zahlen ab 10 verwendet werden.
Ausführungskontexte
Die Konfiguration kann pro Ausführungskontext differenziert werden. Der Abschnitt [default] definiert die Standardwerte für alle Kontexte. Ein benannter Abschnitt (z. B. [Invoker]) überschreibt gezielt einzelne Werte für den jeweiligen Kontext.
Folgende Kontexte sind definiert:
- BeanshellExecutable: BeanShell-Skripte (z. B. Skriptaktionen in Aufträgen, Skripte im SiteArchitect/ContentCreator)
- Invoker: Vorlage-Ausführung (z. B. bei der Generierung oder Vorschau)
Beispiel: Um die Prozesserzeugung standardmäßig zu erlauben, aber aus Vorlagen heraus zu verbieten:
[default]
ProcessStartConstraint.enabled=false
[Invoker]
ProcessStartConstraint.enabled=true
Standardkonfiguration
Wenn keine fs-exec.conf im Verzeichnis conf vorhanden ist, gelten folgende Standardwerte:
[default]
# Prohibiting System.exit() and Runtime.halt()
RuntimeExitConstraint.enabled=true
# Restrict access to protected server files (Blacklist)
ServerFileConstraint.enabled=true
# data directory
ServerFileConstraint.matcher.01=${cmsroot}/data/**/*.xml
ServerFileConstraint.matcher.02=${cmsroot}/data/**/*_backup*
# bin directory
ServerFileConstraint.matcher.03=${cmsroot}/bin/fs-server*
ServerFileConstraint.matcher.04=${cmsroot}/bin/wrapper*
ServerFileConstraint.matcher.05=${cmsroot}/bin/sysinfo*
ServerFileConstraint.matcher.06=${cmsroot}/bin/*.jar
ServerFileConstraint.matcher.07=${cmsroot}/bin/*.exe
# conf directory
ServerFileConstraint.matcher.08=${cmsroot}/conf/fs-jaas.*
ServerFileConstraint.matcher.09=${cmsroot}/conf/fs-wrapper.*
ServerFileConstraint.matcher.10=${cmsroot}/conf/fs-exec.*
ServerFileConstraint.matcher.11=${cmsroot}/conf/**/*_backup*
# Restrict process creation (Whitelist)
ProcessStartConstraint.enabled=true
ProcessStartConstraint.matcher.01=${cmsroot}/shared/bin/*
Konfiguration der Constraints
RuntimeExitConstraint.enabled
Aktiviert oder deaktiviert die Prüfung auf System.exit()- und Runtime.halt()-Aufrufe.
Erlaubte Werte:
- true (aktiv; Standardwert)
- false (deaktiviert)
ServerFileConstraint.enabled
Aktiviert oder deaktiviert die Prüfung auf Zugriffe auf geschützte Dateien im Server-Dateisystem.
Erlaubte Werte
- true (aktiv; Standardwert)
- false (deaktiviert)
ServerFileConstraint.matcher.NN
Definiert ein Pfadmuster für die Blacklist des Dateizugriffs.
NN ist eine zweistellige fortlaufende Nummer (z. B. 20, 21). Dateien, die einem dieser Muster entsprechen, sind für Skripte und Templates gesperrt. Es wird die Glob-Syntax verwendet. ${cmsroot} wird durch den absoluten Pfad des FirstSpirit-Servers ersetzt.
ProcessStartConstraint.enabled
Aktiviert oder deaktiviert die Prüfung auf die Erzeugung externer Prozesse.
Erlaubte Werte
- true (aktiv; Standardwert)
- false (deaktiviert)
ProcessStartConstraint.matcher.NN
Definiert ein Pfadmuster für die Whitelist der erlaubten ausführbaren Dateien.
NN ist eine zweistellige fortlaufende Nummer (z. B. 10, 11). Nur Dateien, die einem dieser Muster entsprechen, dürfen von Skripten und Templates gestartet werden.
Standardmäßig ist nur das Verzeichnis <FirstSpirit-Server>/shared/bin/ erlaubt.
Externe Prozesse erlauben
Wenn aus Skripten oder Templates externe Prozesse gestartet werden sollen, gibt es drei Möglichkeiten:
- Die ausführbare Datei (oder ein Skript bzw. symbolischer Link) wird im Verzeichnis <FirstSpirit-Server>/shared/bin/ abgelegt. Dieses Verzeichnis ist in der Standardkonfiguration bereits erlaubt.
- Die Whitelist wird über zusätzliche ProcessStartConstraint.matcher.NN-Einträge in der fs-exec.conf erweitert.
- Die Prozesserzeugungsprüfung wird über ProcessStartConstraint.enabled=false deaktiviert.
![]() |
Externe Prozesse laufen unter dem Betriebssystem-Benutzer des FirstSpirit-Servers und unterliegen keinen weiteren Beschränkungen durch die Execution Constraints. Ein gestarteter Prozess verfügt somit über die gleichen Rechte wie der FirstSpirit-Server-Prozess selbst. |
![]() |
Das erste Element des Prozess-Kommandos wird gegen die Whitelist geprüft. Das Kommando muss dabei als separates Element übergeben werden — eine Kombination von Pfad und Argumenten in einem einzigen String wird nicht als erlaubter Pfad erkannt. |


