Advertisement
Guest User

vsftpd_set_password

a guest
Feb 24th, 2014
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.16 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Demande le nom d'utilisateur
  4. read -p "Nom d'utilisateur : " nom_d_utilisateur
  5.  
  6. # Vérifie si le nom d'utilisateur est vide
  7. if [ -z $nom_d_utilisateur ]
  8.     then
  9.         echo "Nom d'utilisateur vide"
  10.         exit 1
  11. fi
  12.  
  13. # Vérifie si le script possède les privilèges superutliisateur
  14. if [ "$UID" -ne 0 ]
  15.     then
  16.         echo "Privilèges superutilisateur requis"
  17.         exit 1
  18. fi
  19.  
  20. dossier_vsftpd="/etc/vsftpd/"
  21. fichier_login="login.txt"
  22. extension_sauvegarde=".bak"
  23.  
  24. # Vérifie si le fichier login existe
  25. if [ -f $dossier_vsftpd$fichier_login ]
  26.     then
  27.         # Sauvegarde le fichier login
  28.         cp -v $dossier_vsftpd$fichier_login \
  29.               $dossier_vsftpd$fichier_login$extension_sauvegarde || (
  30.             exit 1
  31.         )
  32. else
  33.     # Crée le fichier login
  34.     touch $dossier_vsftpd$fichier_login || (
  35.         echo "Impossible de créer $fichier_login"
  36.         exit 1
  37.     )
  38. fi
  39.  
  40. # Vérifie si l'utilisateur existe
  41. if [[ -z `grep "^$nom_d_utilisateur$" $dossier_vsftpd$fichier_login` ]]
  42.     then
  43.         echo "$nom_d_utilisateur introuvable"
  44.         exit 1
  45. fi
  46.  
  47. # Récupère le mot de passe
  48. read -p "Nouveau mot de passe : " mot_de_passe
  49.  
  50. # Vérifie si le mot de passe est vide
  51. if [ -z $mot_de_passe ]
  52.     then
  53.         echo "Mot de passe vide"
  54.         exit 1
  55. fi
  56.  
  57. # Change le mot de passe
  58. sed "/^$nom_d_utilisateur$/{n;s/^.*$/$mot_de_passe/}" \
  59.     $dossier_vsftpd$fichier_login$extension_sauvegarde > \
  60.     $dossier_vsftpd$fichier_login
  61.  
  62. version_db="5.1"
  63. paquets_db="libdb$version_db db$version_db-util db$version_db-doc"
  64.  
  65. verifie_si_db_est_installe() {
  66.     # Calcule le SHA-256
  67.     hash=`echo "$paquets_db" | sed "s/ /\n/g" | sort | sha256sum | sed \
  68.           "s/  \-$//g"`
  69.    
  70.     # Compare le résultat avec celui de dpkg
  71.     awk -v paquets_db="$paquets_db" '
  72.         BEGIN {
  73.             split(paquets_db, lignes, " ")
  74.         }
  75.        
  76.         {
  77.             for (iterateur in lignes) {
  78.                 if ($2 == lignes[iterateur]) {
  79.                     print $2 | "sort | sha256sum"
  80.                 }
  81.             }
  82.         }
  83.        
  84.         END {
  85.             close("sort | sha256sum")
  86.         }' <(dpkg -l) | awk -v hash=$hash '
  87.             $1 == hash {
  88.                 code_de_retour = 1
  89.             }
  90.            
  91.             END {
  92.                 exit code_de_retour - 1
  93.             }'
  94. }
  95.  
  96. verifie_si_db_est_installe || (
  97.     # Installe DB
  98.     apt-get -V install $paquets_db
  99.    
  100.     verifie_si_db_est_installe || (
  101.         echo "Impossible d'installer $paquets_db"
  102.         exit 1
  103.     )
  104. )
  105.  
  106. # Vérifie si login.db existe
  107. if [ -f ${dossier_vsftpd}login.db ]
  108.     then
  109.         # Sauvegarde login.db
  110.         cp -v ${dossier_vsftpd}login.db \
  111.               ${dossier_vsftpd}login.db$extension_sauvegarde || (
  112.             exit 1
  113.         )
  114.  
  115.         # Supprime login.db
  116.         rm -v ${dossier_vsftpd}login.db || (
  117.             exit 1
  118.         )
  119. fi
  120.  
  121. # Converti le fichier login au format DB
  122. db${version_db}_load -T -t hash -f $dossier_vsftpd$fichier_login \
  123. ${dossier_vsftpd}login.db || (
  124.     # Vérifie si la sauvegarde de login.db existe
  125.     if [ -f ${dossier_vsftpd}login.db$extension_sauvegarde ]
  126.         then
  127.             # Restaure login.db
  128.             cp -v ${dossier_vsftpd}login.db$extension_sauvegarde \
  129.                   ${dossier_vsftpd}login.db || (
  130.                 exit 1
  131.             )
  132.     fi
  133.    
  134.     echo "Impossible de créer login.db"
  135.     exit 1
  136. )
  137.  
  138. # Restreint l'accès aux fichiers login
  139. chmod -v 600 ${dossier_vsftpd}login.* || (
  140.     exit 1
  141. )
  142.  
  143. # Affiche les identifiants
  144. echo "$nom_d_utilisateur a pour nouveau mot de passe : $mot_de_passe"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement