GNU/Linux >> Tutoriels Linux >  >> Linux

Est-il possible d'empêcher certaines commandes d'être exécutées dans un répertoire ?

J'ai deux répertoires :src et projects . Je voudrais m'empêcher d'exécuter git ... sauf si je suis spécifiquement à l'intérieur de src ou projects . Est-ce possible ?

Réponse acceptée :

Il est difficile d'empêcher l'exécution du binaire, mais pour les situations typiques, une méthode de protection simple existe :

  1. Vous définissez une fonction shell qui écrase le nom. Cela ne fonctionnera évidemment pas dans un autre shell (également celui d'un autre utilisateur).
  2. Vous retirez le binaire du $PATH et le remplacez par un script wrapper. C'est plus sûr mais cela causera évidemment des problèmes avec les mises à jour logicielles (le script sera écrasé).

La fonction shell pourrait ressembler à ceci :

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. Comment rechercher et copier certains types de fichiers d'un répertoire à un autre sous Linux

  2. Planification des commandes par inactivité du système ?

  3. D'où est exécuté un script Shell ?

  4. Exclure certaines commandes du stockage dans l'historique de Bash ?

  5. Est-il possible d'exécuter GNU pur ?

Comment exécuter des commandes à partir d'une entrée standard à l'aide de Tee et Xargs sous Linux

Comment exécuter des commandes Linux en arrière-plan

Commandes Linux de base

Comment accéder au shell ou exécuter des commandes externes depuis Vim

Comment exécuter tous les scripts dans un répertoire sous Linux

Commandes du répertoire Linux :un guide complet