Shellbox/cs



Shellbox je knihovna pro provádění příkazů a také server a klient pro vzdálené provádění příkazů. Primárně byl implementován do sandboxu LilyPond (používaný Score extension) a poskytuje způsob, jak MediaWiki může využívat externí binární soubory, aniž by je bylo nutné spouštět ve stejném kontejneru. Byl navržen a schválen prostřednictvím RFC:Mikroslužby PHP pro spouštění kontejnerového prostředí. Shellbox je použitelný od.

Informace o používání Shellboxu v MediaWiki jsou k dispozici na.



Nastavení serveru
Doporučuje se nastavit Shellbox tak, aby běžel jako neprivilegovaný uživatel v izolovaném kontejneru bez přístupu k externí síti. Wikimedie pro tento účel používá Kubernetes a má Helm graf, který může být znovu použitelný.

Do kontejneru by měly být nainstalovány následující balíčky: Apache2, PHP-FPM a jakékoli příkazy, které potřebujete (např. ,   atd.).

V následujících příkladech používáme  jako interní název hostitele kontejneru.


 * Získejte zdroj Shellbox a jeho závislosti:
 * Vytvořte neprivilegovaného uživatele pro Shellbox:
 * Vytvořte dočasný pracovní adresář pro Shellbox:
 * Create the Shellbox configuration file referencing that temporary work directory :
 * Generate a secret key; it is strongly recommended to use a 128-bit minimal strength, so here we use 16 random bytes formatted into an hexadecimal string:
 * Create the Apache configuration, and paste the secret key inside :
 * Protect the Apache configuration file against unprivileged reads of the secret key and unprivileged modifications, by any other system user or group than those configured to run Apache itself on the server:
 * Create the PHP-FPM pool configuration. When configured in this way, Shellbox does not have permission to connect to the PHP-FPM socket:

Pre-built containers
Wikimedia has pre-built containers that contain Shellbox, its dependencies, and PHP-FPM:


 * Wikimedia Docker registry for Shellbox containers

These images currently have no stability guarantee/versioning (help wanted on figuring this out).

Routes
Shellbox exposes a  route for manual and automated health checks. It also has a PHP-RPC interface for executing sandboxed PHP code.