2017-07-22 5 views
1

Toute la documentation que j'ai regardée semble indiquer que dans les alias et les fonctions shell, le nom ne peut pas contenir d'espaces. Ce que j'essaie de faire est de rendre plus difficile pour les autres administrateurs (en tant que root) d'exécuter une commande contre notre implémentation Pass (doc ici: https://www.passwordstore.org/). Ce serait encore possible, mais j'espérais tourner une commande comme "pass rm $ anyValueTheyInput" et alias cela, pour dire "echo 'Vous ne pouvez pas faire ça" ". Bien sûr, ce sont des administrateurs et ils peuvent changer leurs alias, mais il est à espérer que cela empêchera le retrait accidentel des mots de passe.Comment alias une commande avec des espaces? (Ou une fonction shell)

Est-ce possible dans BASH? Ceux-ci seront tous sur des boîtes RHEL ou Centos.

Répondre

4

Il est impossible d'aliaser des commandes entières complètes avec des arguments dans bash (même si cela est possible dans n'importe quel shell UNIX).

Ce que vous pouvez faire est de créer une fonction pass qui attire tous les packs d'arguments indésirables et avant tout autre argument emballe à command pass:

pass() 
{ 
    if [ rm = "$1" ]; then 
     >&2 printf '%s\n' "You can't do that" 
     return 1 
    fi 
    #more checks... ? 
    #... 
    #forward the sanitized argument pack into the actual pass binary/script 
    command pass "[email protected]" 
}