Regulären Ausdruck verbieten



  • Hi,

    wie bekomme ich es mit Bash hin, einen regulären Ausdruck zu verbieten/ersetzen? Im Sinne von...

    ersetzer --wenn 'e[abc]ho x' --dann 'echo y'
    

    Ist sowas überhaupt möglich?
    Mit dem bind Kommando kriegt man sowas teilweise hin, aber auch der versteht keine regulären Ausdrücke.



  • ich verstehe nicht ganz was du willst. Verbieten und ersetzen sind zwei unterschiedlichen Sachen.

    grep hat die -v Option

    man grep schrieb:

    -v, --invert-match
    Invert the sense of matching, to select non-matching lines.

    mit der du sog. das negative regexp matchen kannst.



  • Ok, vergesst mal das verbieten.

    Machst du folgendes:

    bind -x '"echo x":"echo y"'
    

    ...dann wird jedes mal wenn du "echo x" eintippst (insofern du es schnell genug eintippst) ersetzt und stattdessen wird "echo y" ausgeführt.

    Nun kann man das jedoch umgehen, imdem man wie besagt, das Kommando langsamer eintippt, sodass es nicht mehr wie eine Sequenz von Zeichen ausgewertet wird. Und ich such halt was besseres (und was ganz anderes).

    Du schreibst "echo x", feuerst es ab und soll mit einem anderem Kommando ersetzt werden. Ähnlich wie alias, nur dass man statt einem einzelnen Namen ganze reguläre Ausdrücke verwenden kann.

    Ich muss zugeben, wenn das möglich ist, klingt das einerseits nach ner gewaltigen Sicherheitslücke, andererseits könnte man damit bösartigen Skript-Code einfach "verbieten". Und das war auch eigentlich der Sinn der Sache.

    Wenn mein Verlangen also wirklich nicht möglich ist, dann frag ich mal anders:
    Wie kann ich spezifischen Skript-Code einfach verbieten/ins Nirvana schicken/mit "echo Pupsihasi" ersetzen?



  • Wie definierst du "bösartiger Skript-Code"? Willst du verhindern, dass ein key-binding auf bash level gar nicht ausgeführt wird?



  • Zum Beispiel ne Fork-Bombe, dessen Funktionsnamen nicht bloß ':' sein kann. Wie verhindere ich das?



  • Um ehrlich zu sein, ich hab keine Ahnung. Aber ich kann mir auch vorstellen, dass es kein Verfahren gibt, welches entscheiden kann, ob ein Skript "bösartig" ist oder nicht. Da wird nicht nichts überig bleiben, als per Hand all deiner bash binds zu untersuchen, diese zu löschen, falls sie bösartig. Und dasselbe für Skripte, die du dann ausführst.


  • Mod

    Popel schrieb:

    Zum Beispiel ne Fork-Bombe, dessen Funktionsnamen nicht bloß ':' sein kann. Wie verhindere ich das?

    Genau so wie alle anderen Gefahren: Indem du das eigentlich Übel an der Wurzel anpackst. In diesem Fall also indem du eine Obergrenze für die Anzahl an Prozessen einführst, die ein unprivilegierter Benutzer gleichzeitig ausführen darf. Denn in Wirklichkeit interessiert es dich doch, dass dieser Benutzer nicht zig Tausende Prozesse gleichzeitig ausführt, und nicht, wie genau er das zustande bringt.

    Ebenso ist natürlich für alle anderen Gefahren vorzugehen, vor denen du dein System schützen möchtest.



  • Danke, habs raus.


Anmelden zum Antworten