É difícil impedir que o binário seja executado, mas, para as situações típicas, existe um método de proteção fácil:
- Você define uma função de shell que sobrescreve o nome. Isso obviamente não funcionará em outro shell (também de outro usuário).
- Você tira o binário do $ PATH e o substitui por um script de wrapper. Isso é mais seguro, mas obviamente causará problemas com atualizações de software (o script é sobrescrito).
A função shell pode ter esta aparência:
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
}