Suche/Ein Containerwerkzeug ohne Root-Rechte bauen, mit Sperren und geprüften Image-Downloads

Ein Containerwerkzeug ohne Root-Rechte bauen, mit Sperren und geprüften Image-Downloads

Für den Bau eines Containerwerkzeugs ohne Root-Rechte. Die KI sperrt Container bei Änderungen, prüft jede geladene Image-Schicht, übernimmt keine Host-Einstellungen, beendet ganze Prozessbäume und lehnt unsichere Pfade beim Wiederherstellen ab.

Diese KI-Regeln verwenden
## Den Kern nur mit der Standardbibliothek bauen und mobile Hosts erkennen Halte die zentrale Laufzeitumgebung frei von Drittanbieterabhängigkeiten und bevorzuge sprachinterne Funktionen, statt für Systemabfragen, Downloads, Archive und Plattformprüfungen eine Shell aufzurufen. ### Abhängigkeitsrichtlinie - Verwende die Standardbibliothek für Prüfungen der Terminalfähigkeiten, Benutzer- und Gruppendaten, Binärdateiprüfungen, Architekturerkennung, HTTP und Archive. - Starte nur die Container-Laufzeitumgebung, die für die tatsächliche Isolierung erforderlich ist. - Fehlt diese Laufzeitumgebung auf einem unterstützten Wirtssystem, biete ihre Installation nur in einem interaktiven Terminal und erst nach Zustimmung des Benutzers an. - Starte die Laufzeitumgebung gegebenenfalls durch Ersetzen des aktuellen Prozesses, statt eine Shell-Schicht hinzuzufügen. - Verwende das Paketmanifest als maßgebliche Versionsquelle und dokumentiere eine Ausweichlösung für nicht installierte Quellbäume. - Leite alle Befehlsaliase und Konsolen-Einsprungpunkte an eine einzige kanonische Hauptfunktion weiter. ### Plattform-Erkennung - Erkenne ein spezialisiertes mobiles Wirtssystem nur, wenn mindestens zwei unabhängige Signale übereinstimmen: Betriebssystemhinweise, dafür vorgesehene Umgebungsvariablen und ein zugängliches Plattformpräfix. - Ermittle das Ergebnis einmal und verwende es einheitlich für Pfade, die Standardumgebung, verfügbare Optionen, Einbindungen und Laufzeiterweiterungen. - Verwende auf gewöhnlichen Wirtssystemen standardmäßig die üblichen Basisverzeichnis-Konventionen ohne mobilspezifische Einbindungen. ## Container über den Ordnernamen erkennen und besondere Gastsysteme getrennt behandeln Behandle die Verzeichnisidentität, das Vorhandensein von Metadaten, die Migration älterer Strukturen und das Verhalten des Gastsystems als getrennte Entscheidungen. ### Speichermodell - Verwende den validierten Verzeichnisnamen als alleinige Containerkennung. - Speichere das zusammengesetzte Dateisystem unter diesem Verzeichnis und halte die Abbildmetadaten in einem getrennten Manifest. - Erlaube bei Installationen aus einfachen Archiven das Weglassen von Abbildmetadaten, wenn kein Registry-Abbild vorhanden ist. - Migriere ältere Verzeichnisstrukturen bei der ersten Operation, die die neue Struktur benötigt, und erstelle anschließend die betroffenen Kompatibilitätsverknüpfungen neu. - Leite die Speicherorte für Laufzeitumgebung, Zwischenspeicher, Container, Sitzungen, Schichten und Manifeste aus einem einzigen plattformabhängigen Pfadmodul ab. - Validiere Containernamen an jedem Einsprungpunkt, einschließlich aus Abbildern abgeleiteter Aliase und aus Archiven gelesener Namen. ### Klassifizierung des Gastsystems - Erkenne ein spezialisiertes Gastsystem anhand einer Kennzeichnungsdatei, die eine Datei und nicht bloß ein vorhandener Pfad sein muss; parallele Sitzungen können Einbindungsziele als Verzeichnisse anlegen. - Weise spezialisierten Gastsystemen eigene Ausgangswerte für Heimatverzeichnis, Pfad, Präfix und temporäres Verzeichnis zu. - Binde niemals private Verzeichnisse oder das Installationspräfix der Wirtsanwendung über ein Gastsystem ein, das eigene Entsprechungen bereitstellt. - Deaktiviere für diesen Gastsystemtyp unvereinbare Verknüpfungskonvertierungen und identitätsändernde Optionen. - Wende optionale Einbindungen des Wirtssystems nur außerhalb des isolierten und des minimalen Modus an. - Lehne spezialisierte Gastsysteme mit abweichender Architektur ab, wenn ein gemeinsam genutztes Präfix dazu führen würde, dass Wirtsbinärdateien die Binärdateien des Gastsystems überlagern. ## Befehle richtig verteilen und Schreibvorgänge mit Sperren und temporären Dateien schützen Befehlsanalyse und die Eigentümerschaft von Sperren müssen bei Unterbrechung, Wiedereintritt, Prozessersetzung, Abkopplung und gleichzeitiger Zwischenspeicheraktivität korrekt bleiben. ### CLI-Ablauf 1. Leite zusätzliche Beendigungssignale in den normalen Unterbrechungspfad, damit Fortschrittsdaten und unvollständige Dateien einheitlich bereinigt werden. 2. Warne vor einer Ausführung mit erhöhten Rechten, ohne die Warnung zu einem schwerwiegenden Fehler zu machen, und lehne verschachtelte Aufrufe der Container-Laufzeitumgebung ab. 3. Prüfe die Laufzeitumgebung nur für Befehle, die sie benötigen; Inspektions-, Prozess- und reine Abbildbefehle dürfen engere Voraussetzungen festlegen. 4. Fange die Befehlshilfe vor der Validierung der Positionsargumente ab und lehne unbekannte Befehle vor der allgemeinen Analyse ab. 5. Bewahre bei Befehlen, die ein inneres Programm starten, alle Elemente nach dem wörtlichen Options-Trennzeichen. 6. Erzwinge erforderliche Argumente zentral, außer wenn der Eingabemodus die Anforderungen bewusst bestimmt. 7. Aktiviere den globalen Ruhemodus vor der Befehlsverteilung, erhalte dabei die befehlsspezifische Bedeutung und zeige Fehler sowie Warnungen immer an. ### Sperren und Atomarität - Verwende gemeinsame Sperren für leseähnliche Sitzungen und Sicherungen sowie exklusive Sperren für Installation, Entfernen, Umbenennen, Zurücksetzen, Wiederherstellen und Zielschreibvorgänge. - Beziehe mehrere Containersperren in der sortierten Reihenfolge ihrer Pfade. - Ordne Erstellungssperren dem Ausgabeabbild und der Architektur zu und schütze gemeinsam genutzte Zwischenspeicherindizes mit einer eigenen Sperre. - Gestalte exklusive Sperren wiedereintrittsfähig für Befehle, die einen weiteren verändernden Befehl für denselben Container aufrufen. - Lasse Sitzungssperren eine Prozessersetzung überdauern und löse sie vom ursprünglichen Prozess, statt sie freizugeben, wenn ein abgekoppelter Nachkomme das Eigentum erbt. - Schlage bei einem Sperrenkonflikt sofort fehl und melde den Inhaber, sofern er ermittelt werden kann. - Jeder Schreiber von Zwischenspeicher- und Kennzeichnungsdateien muss eine temporäre Datei erstellen, sie anschließend atomar ersetzen und bei allen Ausnahmen bereinigen. ## Geladene Image-Schichten prüfen und Registry-Zugangsdaten schützen Behandle Registry-Verweise, Authentifizierung, Weiterleitungen, Prüfsummen, Schichten und Archiveinträge als feindlich, bis sie validiert wurden. ### Abruf und Zwischenspeicherung - Bevorzuge für die Offline-Nutzung einen vollständigen geprüften Zwischenspeicher; fehlen nur Schichten, rufe ausschließlich diese Schichten ab. - Berechne den Hashwert jeder heruntergeladenen Schicht während der Übertragung und vergleiche ihre Prüfsumme vor der Übernahme. - Validiere die Schreibweise der Prüfsumme, bevor du sie in einen Dateisystempfad umwandelst, damit manipulierte Verweise nicht aus dem Stammverzeichnis des Zwischenspeichers ausbrechen können. - Lehne Komprimierungsformate ab, die die Archivimplementierung nicht sicher dekodieren kann. - Implementiere undurchsichtige und eintragsbezogene Whiteouts, filtere Hartlink-Ziele und lehne Pfadtraversierung in Eintragsnamen ab. ### Authentifizierung und Übertragung - Verlange eine ausdrückliche Form mit Benutzername und Passwort, bevor du Basic-Anmeldedaten an einen Token-Dienst weiterleitest. - Entferne Autorisierungs-Header bei Weiterleitungen zu einem anderen Wirtssystem. - Begrenze erworbene Token auf die angeforderten Abruf- oder Übertragungsaktionen. - Bringe die gespeicherte Konfiguration vor der Übertragung in eine kanonische Form und vergleiche ihre Prüfsumme mit dem Manifest. - Prüfe entfernte Datenobjekte und lade nur fehlende Inhalte hoch. - Halte nicht unterstützte Übertragungsmodi und Mehrarchitekturindizes außerhalb des Umfangs, statt sie näherungsweise nachzubilden. - Gib Autorisierungsfehler als Berechtigungsfehler aus, ohne Anmeldedaten offenzulegen. ## Die Architektur des Gastsystems melden und die Umgebung von Kindprozessen neu aufbauen Architekturangaben und Umgebungen von Kindprozessen müssen das Gastsystem beschreiben und dürfen nicht versehentlich das Wirtssystem übernehmen. ### Architektur - Ermittle die Architektur eines installierten Gastsystems aus Binärdateiköpfen bekannter ausführbarer Dateien. - Vereinheitliche native, Registry- und plattformpräfixierte Architekturnamen durch eine einzige Zuordnung. - Wähle einen Emulator nur, wenn keine native Ausführung verfügbar ist, und binde ausschließlich die Systempfade ein, die sein Ladeprogramm benötigt. - Melde die Architektur des Gastsystems und die emulierte Kernelidentität, statt den Wert des Wirtssystems zu kopieren. ### Umgebung des Kindprozesses - Erzeuge die Umgebung des Kindprozesses aus einer leeren Zuordnung und übergib sie direkt an die Prozessersetzung. - Wende die Rangfolge bewusst an: Ausgangswerte, gefilterte Abbildvariablen, erlaubte Wirtsvariablen, Benutzerüberschreibungen, Identitätsvariablen und anschließend Terminalvariablen. - Wende Abbild- und Benutzervariablen in jedem Modus an, während mobile Wirtsvariablen auf den gewöhnlichen nicht isolierten Modus beschränkt bleiben. - Lasse im minimalen Modus den Ausgangspfad, Variablen zur Wirtsintegration und die Benutzeridentität weg, sofern sie nicht ausdrücklich benötigt werden. - Validiere Variablennamen vor dem Schreiben eines Anmeldeprofils und setze die Werte sicher in Anführungszeichen. - Schließe sitzungsspezifische, laufzeitinterne, Ladeprogramm- und Identitätsvariablen aus dauerhaften Profilen aus. - Entferne Variablen zum Vorladen des Ladeprogramms vor der Ausführung und halte gemeinsam genutzte Kompatibilitätsverzeichnisse über parallele Sitzungen hinweg stabil. ## Container im Hintergrund starten und den ganzen Prozessbaum beenden Ausführungs-, Abkopplungs-, Beendigungs- und Erstellungsvorgänge müssen das Manifestverhalten, die Lebensdauer der Sperren, die Portabilität und das Prozesseigentum bewahren. ### Ausführen und Abkoppeln - Kombiniere den Einsprungpunkt und die Befehlswerte des Abbilds entsprechend der Semantik von Containerabbildern. - Beachte eine ausdrückliche Überschreibung des Arbeitsverzeichnisses und verwende andernfalls die Abbildeinstellung oder das Stammverzeichnis des Dateisystems. - Bestimme den Befehlsvorschaumodus vor jeder Abkopplungsverzweigung. - Kopple die Ausführung mit einer doppelten Prozessgabelung und einer neuen Sitzung ab, leite die Standarddatenströme um und registriere den endgültigen Laufzeitprozess im Enkelprozess. - Übermittle die endgültige Prozesskennung an den Vordergrundprozess und lasse den abgekoppelten Nachkommen die geerbte Containersperre halten. ### Sichere Beendigung und Erstellung - Ermittle Beendigungsziele ausschließlich aus dem Register der aktiven Sitzungen. - Beende den vollständigen Nachkommenbaum und nicht nur den Wurzelprozess der Laufzeitumgebung. - Erstelle eine zyklussichere Zuordnung der Elternprozesse, sende niemals Signale an den aktuellen Prozess oder systemkritische Prozesskennungen und prüfe die ausführbare Datei des Wurzelprozesses, bevor du den Baum durchläufst. - Verwende standardmäßig ein schonendes Beendigungssignal und erlaube eine ausdrückliche Überschreibung durch Namen oder Zahl. - Analysiere Erstellungsstufen und globale Argumente vor der Ausführung, validiere Ziele frühzeitig und leite Metadaten-, Ausführungs-, Kopier- und Hinzufügeoperationen an eigene Verarbeitungsfunktionen weiter. - Führe Erstellungsschritte isoliert und nicht interaktiv aus, sofern kein Here-Dokument Eingaben bereitstellt. - Ordne Einträge des Erstellungszwischenspeichers dem Elternzustand, der Anweisung und relevanten zusätzlichen Eingaben zu; sperre Aktualisierungen des Zwischenspeicherindexes. - Schließe Laufzeit-Kompatibilitätsmetadaten aus portablen Schichtenabbildern aus und bewahre dabei den Inhalt der referenzierten Datei. ## Container sichern und wiederherstellen und dabei unsichere Archiveinträge ablehnen Archive und Terminalausgaben überschreiten Vertrauensgrenzen und dürfen weder den Containerzustand noch interaktive Eingabeaufforderungen beschädigen. ### Sicherung und Wiederherstellung - Speichere jeden Container unter einem einzigen Archivstamm, der optionale Metadaten und den Dateisystembaum enthält. - Mache nicht lesbare Unterbäume für die Sicherung zugänglich, filtere Geräte und Kommunikationsendpunkte und vereinheitliche Eigentumsmetadaten. - Lehne die Ausgabe binärer Archive an ein interaktives Terminal ab, sofern kein ausdrückliches Ausgabeziel angegeben wurde. - Erkenne die Komprimierung anhand der Archivdaten und Standardformate, einschließlich Eingaben als Datenstrom. - Ordne ältere Archivstrukturen unter der aktuellen Containerstruktur neu ein. - Lehne leere Einträge, Einträge des aktuellen oder übergeordneten Verzeichnisses und Einträge mit ungültigen Containernamen ab. - Beziehe die Zielsperre und lösche ein vorhandenes Dateisystem erst, wenn der erste gültige Eintrag für diesen Container zur Wiederherstellung bereitsteht. ### Terminal- und Befehlsintegration - Unterdrücke informative Terminalausgaben, während eine nebenläufige Passwort- oder Vollbildabfrage das Terminalecho oder den kanonischen Modus besitzt. - Halte Hilfeinhalte als Daten vor und stelle sie innerhalb der dokumentierten Breitenbegrenzungen anpassungsfähig dar. - Registriere jeden neuen Befehl in der Befehlsverteilung, den Analysemetadaten, den erforderlichen Argumenten, den Hilfedaten und den Aliastabellen. - Bewahre den Lizenzkopf des Pakets und die Namenskonventionen in jeder neuen Quelldatei.