特定のコマンドがディレクトリで実行されることを制限できますか?

特定のコマンドがディレクトリで実行されることを制限できますか?

2つのディレクトリがあります:srcと。特に、または内部にない限りprojects実行されないようにしたいと思います。可能ですか?git ...srcprojects

ベストアンサー1

バイナリの実行を防ぐことは困難ですが、一般的な場合には簡単な保護方法があります。

  1. この名前を置き換えるシェル関数を定義します。これは明らかに他の(また他のユーザーの)シェルでは機能しません。
  2. $ PATHからバイナリを取り出し、ラッパースクリプトに置き換えます。これはより安全ですが、明らかにソフトウェアの更新に問題を引き起こす可能性があります(スクリプトの上書き)。

シェル関数は次のとおりです。

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 "$@"
  fi
}

おすすめ記事