GNU/Linux >> Linux Esercitazione >  >> Linux

È possibile limitare l'esecuzione di determinati comandi in una directory?

Ho due directory:src e projects . Vorrei impedirmi di eseguire git ... a meno che non sia specificamente all'interno di src o projects . È possibile?

Risposta accettata:

È difficile impedire l'esecuzione del binario, ma per le situazioni tipiche esiste un metodo di protezione semplice:

  1. Definisci una funzione di shell che sovrascrive il nome. Questo ovviamente non funzionerà in un'altra shell (anche di un altro utente).
  2. Elimini il binario da $PATH e lo sostituisci con uno script wrapper. Questo è più sicuro ma ovviamente causerà problemi con gli aggiornamenti software (lo script viene sovrascritto).

La funzione della shell potrebbe assomigliare a questa:

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. Linux:come eseguire un bootloader da Linux?

  2. Comandi di pianificazione per inattività del sistema?

  3. Da dove viene eseguito uno script di shell?

  4. Escludere alcuni dei comandi dall'essere archiviati nella cronologia di Bash?

  5. È possibile eseguire GNU puro?

Come eseguire comandi dall'input standard utilizzando Tee e Xargs in Linux

Come eseguire i comandi Linux in background

Comandi di base di Linux

Come accedere alla shell o eseguire comandi esterni da Vim

Come eseguire tutti gli script in una directory in Linux

Comandi della directory Linux:una guida completa