Gestion des erreurs, find, commentaires

This commit is contained in:
Breizh 2018-01-03 14:17:27 +01:00
parent 7f35db0cea
commit d5a3ce9b1f
1 changed files with 30 additions and 8 deletions

38
init.sh
View File

@ -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