Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Demande le nom d'utilisateur
- read -p "Nom d'utilisateur : " nom_d_utilisateur
- # Vérifie si le nom d'utilisateur est vide
- if [ -z $nom_d_utilisateur ]
- then
- echo "Nom d'utilisateur vide"
- exit 1
- fi
- # Vérifie si le script possède les privilèges superutliisateur
- if [ "$UID" -ne 0 ]
- then
- echo "Privilèges superutilisateur requis"
- exit 1
- fi
- dossier_vsftpd="/etc/vsftpd/"
- fichier_login="login.txt"
- extension_sauvegarde=".bak"
- # Vérifie si le fichier login existe
- if [ -f $dossier_vsftpd$fichier_login ]
- then
- # Sauvegarde le fichier login
- cp -v $dossier_vsftpd$fichier_login \
- $dossier_vsftpd$fichier_login$extension_sauvegarde || (
- exit 1
- )
- else
- # Crée le fichier login
- touch $dossier_vsftpd$fichier_login || (
- echo "Impossible de créer $fichier_login"
- exit 1
- )
- fi
- # Vérifie si l'utilisateur existe
- if [[ -z `grep "^$nom_d_utilisateur$" $dossier_vsftpd$fichier_login` ]]
- then
- echo "$nom_d_utilisateur introuvable"
- exit 1
- fi
- # Récupère le mot de passe
- read -p "Nouveau mot de passe : " mot_de_passe
- # Vérifie si le mot de passe est vide
- if [ -z $mot_de_passe ]
- then
- echo "Mot de passe vide"
- exit 1
- fi
- # Change le mot de passe
- sed "/^$nom_d_utilisateur$/{n;s/^.*$/$mot_de_passe/}" \
- $dossier_vsftpd$fichier_login$extension_sauvegarde > \
- $dossier_vsftpd$fichier_login
- version_db="5.1"
- paquets_db="libdb$version_db db$version_db-util db$version_db-doc"
- verifie_si_db_est_installe() {
- # Calcule le SHA-256
- hash=`echo "$paquets_db" | sed "s/ /\n/g" | sort | sha256sum | sed \
- "s/ \-$//g"`
- # Compare le résultat avec celui de dpkg
- awk -v paquets_db="$paquets_db" '
- BEGIN {
- split(paquets_db, lignes, " ")
- }
- {
- for (iterateur in lignes) {
- if ($2 == lignes[iterateur]) {
- print $2 | "sort | sha256sum"
- }
- }
- }
- END {
- close("sort | sha256sum")
- }' <(dpkg -l) | awk -v hash=$hash '
- $1 == hash {
- code_de_retour = 1
- }
- END {
- exit code_de_retour - 1
- }'
- }
- verifie_si_db_est_installe || (
- # Installe DB
- apt-get -V install $paquets_db
- verifie_si_db_est_installe || (
- echo "Impossible d'installer $paquets_db"
- exit 1
- )
- )
- # Vérifie si login.db existe
- if [ -f ${dossier_vsftpd}login.db ]
- then
- # Sauvegarde login.db
- cp -v ${dossier_vsftpd}login.db \
- ${dossier_vsftpd}login.db$extension_sauvegarde || (
- exit 1
- )
- # Supprime login.db
- rm -v ${dossier_vsftpd}login.db || (
- exit 1
- )
- fi
- # Converti le fichier login au format DB
- db${version_db}_load -T -t hash -f $dossier_vsftpd$fichier_login \
- ${dossier_vsftpd}login.db || (
- # Vérifie si la sauvegarde de login.db existe
- if [ -f ${dossier_vsftpd}login.db$extension_sauvegarde ]
- then
- # Restaure login.db
- cp -v ${dossier_vsftpd}login.db$extension_sauvegarde \
- ${dossier_vsftpd}login.db || (
- exit 1
- )
- fi
- echo "Impossible de créer login.db"
- exit 1
- )
- # Restreint l'accès aux fichiers login
- chmod -v 600 ${dossier_vsftpd}login.* || (
- exit 1
- )
- # Affiche les identifiants
- echo "$nom_d_utilisateur a pour nouveau mot de passe : $mot_de_passe"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement