GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ist es möglich, die Ausführung bestimmter Befehle in einem Verzeichnis einzuschränken?

Ich habe zwei Verzeichnisse:src und projects . Ich möchte mich selbst daran hindern, git ... auszuführen es sei denn, ich befinde mich ausdrücklich innerhalb von src oder projects . Ist das möglich?

Akzeptierte Antwort:

Es ist schwierig zu verhindern, dass die Binärdatei ausgeführt wird, aber für die typischen Situationen gibt es eine einfache Schutzmethode:

  1. Sie definieren eine Shell-Funktion, die den Namen überschreibt. Dies funktioniert offensichtlich nicht in einer anderen (auch der eines anderen Benutzers) Shell.
  2. Sie nehmen die Binärdatei aus dem $PATH und ersetzen sie durch ein Wrapper-Skript. Dies ist sicherer, führt aber offensichtlich zu Problemen bei Software-Updates (das Skript wird überschrieben).

Die Shell-Funktion könnte so aussehen:

git () {
  local cwd="$(pwd -P)"
  if ! [ "/path/to/src" = "$cwd" -o "/path/to/projects" = "$cwd" ]; then
    echo "The current working directory is: '${cwd}'"
    echo "git must not be run from here; from src and projects only."
    echo "Aborting."
  else
    command git "[email protected]"
  fi
}

Linux
  1. Befehle nach Systeminaktivität planen?

  2. Wo wird ein Shell-Skript ausgeführt?

  3. Einige der Befehle davon ausschließen, im Bash-Verlauf gespeichert zu werden?

  4. Benutzerdefinierte Git-Befehle von PATH funktionieren nicht

  5. Ist es möglich, reines GNU auszuführen?

So führen Sie Befehle von der Standardeingabe mit Tee und Xargs in Linux aus

So führen Sie Linux-Befehle im Hintergrund aus

Grundlegende Linux-Befehle

Wie man von Vim aus auf die Shell zugreift oder externe Befehle ausführt

So führen Sie alle Skripte in einem Verzeichnis unter Linux aus

Linux-Verzeichnisbefehle:Eine vollständige Anleitung