diff --git a/init.sh b/init.sh index d4d1011..e4e9c74 100755 --- a/init.sh +++ b/init.sh @@ -1,24 +1,46 @@ #!/bin/bash # Script d'initialisation de la base de donnée. Crée le fichier s'il n'existe -# pas, crée la base de donnée, les tables, les relations. +# pas, crée la base de donnée, puis la remplie avec les premières images. +# Vérifie que la base n'existe pas déjà if [ -f suidchecker.db ] then - echo "La base de données existe déjà !" 2>&1 + echo "Le fichier existe déjà." >&2 exit 1 fi -echo "CREATE TABLE fichier( - chemin TEXT PRIMARY KEY, - cksum INTEGER -);" | sqlite3 suidchecker.db +# Vérifie qu'on est bien en root +if [ $(id -u) -ne 0 ] +then + echo "Ce script doit être executé en root" >&2 + exit 1 +fi -echo "CREATE TABLE controle( +# Création de la base de données +echo "Création de la base de données" + +# Le flag e interdit les erreurs. Si une commande échoue après celle-ci, le +# script s'arrête. +set -e + +# On lance les commandes sqlite +sqlite3 suidchecker.db \ + "CREATE TABLE fichier(chemin TEXT PRIMARY KEY, cksum INTEGER);" +sqlite3 suidchecker.db "CREATE TABLE controle( chemin TEXT, date INTEGER, cksum INTEGER, status TEXT, FOREIGN KEY(chemin) REFERENCES fichier(chemin), PRIMARY KEY(chemin,date) -);" | sqlite3 suidchecker.db +);" + +# Autorise à nouveau les erreurs, find pouvant renvoyer un code d'erreur 1 en +# cas de problème de droits (notamment sur les fichiers spéciaux) +set +e + +echo "Récupération des fichiers ayant le bit SUID" +files=$(find / -perm -4000 2> /dev/null) + +echo $files