2016-11-08 1 views
-2

Existe-t-il un moyen de vérifier si le chemin d'accès fourni par l'entrée de l'utilisateur ou un mécanisme d'auto-détection peut être supprimé en toute sécurité dans les scripts bash?Suppression récursive sécurisée dans bash

Par exemple:

rm -rf $SOMELOCATION 

Il est évident que je ne veux pas SOMELOCATION d'être l'une des// var/etc/home/usr/opt/root ou certains répertoires importants.

Y a-t-il un moyen d'empêcher incident dans bash sans itération tous ceux répertoire ci-dessus (et éventuellement répertoire plus important)?

Y at-il quelque chose comme la fonction isSystemDirectory retourne true ou false? :-)

+3

Sous Linux, vous ne pouvez pas supprimer les fichiers système sauf si vous êtes 'root'. Tant que vous n'exécutez pas 'rm' en tant que' sudo', vous n'avez pas besoin de vous inquiéter que l'utilisateur supprime des fichiers qui ne lui appartiennent pas. – Munir

+2

SO est pour les questions de programmation informatique. Le support technique Unix appartient à unix.SE ou SuperUser.com. – Barmar

Répondre

1

Non; vous devez vérifier la valeur de SOMELOCATION avant de l'utiliser comme argument à rm.

case $SOMELOCATION of 
    /|/var|/etc|/home|/usr|/opt|/root) echo "Will not delete $SOMELOCATION" ;; 
    *) rm -rf "$SOMELOCATION ;; 
esac 

autorisations permettent rm d'échouer, mais depuis root a essentiellement la permission de faire quoi que ce soit , il est tout simplement à vous de prendre des soins appropriés lors d'exécuter une commande comme root. (Ou à tout le moins, avoir une sauvegarde à jour disponible pour récupérer à partir d'une erreur.)