Advertisement
Guest User

vsftpd_remove_user

a guest
Feb 24th, 2014
17
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.23 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.  
  23. # Vérifie si l'utilisateur existe
  24. if [[ -z `grep "^$nom_d_utilisateur$" $dossier_vsftpd$fichier_login` ]]
  25.     then
  26.         echo "$nom_d_utilisateur introuvable"
  27.         exit 1
  28. fi
  29.  
  30. extension_sauvegarde=".bak"
  31.  
  32. # Vérifie si le fichier login existe
  33. if [ -f $dossier_vsftpd$fichier_login ]
  34.     then
  35.         # Sauvegarde le fichier login
  36.         cp -v $dossier_vsftpd$fichier_login \
  37.               $dossier_vsftpd$fichier_login$extension_sauvegarde || (
  38.             exit 1
  39.         )
  40. else
  41.     # Crée le fichier login
  42.     touch $dossier_vsftpd$fichier_login || (
  43.         echo "Impossible de créer $fichier_login"
  44.         exit 1
  45.     )
  46. fi
  47.  
  48. # Supprime l'utilisateur
  49. sed "/^$nom_d_utilisateur$/{n;d}" \
  50.     $dossier_vsftpd$fichier_login$extension_sauvegarde | sed \
  51.     "/^$nom_d_utilisateur$/{d}" > $dossier_vsftpd$fichier_login
  52.  
  53. version_db="5.1"
  54. paquets_db="libdb$version_db db$version_db-util db$version_db-doc"
  55.  
  56. verifie_si_db_est_installe() {
  57.     # Calcule le SHA-256
  58.     hash=`echo "$paquets_db" | sed "s/ /\n/g" | sort | sha256sum | sed \
  59.           "s/  \-$//g"`
  60.    
  61.     # Compare le résultat avec celui de dpkg
  62.     awk -v paquets_db="$paquets_db" '
  63.         BEGIN {
  64.             split(paquets_db, lignes, " ")
  65.         }
  66.        
  67.         {
  68.             for (iterateur in lignes) {
  69.                 if ($2 == lignes[iterateur]) {
  70.                     print $2 | "sort | sha256sum"
  71.                 }
  72.             }
  73.         }
  74.        
  75.         END {
  76.             close("sort | sha256sum")
  77.         }' <(dpkg -l) | awk -v hash=$hash '
  78.             $1 == hash {
  79.                 code_de_retour = 1
  80.             }
  81.            
  82.             END {
  83.                 exit code_de_retour - 1
  84.             }'
  85. }
  86.  
  87. verifie_si_db_est_installe || (
  88.     # Installe DB
  89.     apt-get -V install $paquets_db
  90.    
  91.     verifie_si_db_est_installe || (
  92.         echo "Impossible d'installer $paquets_db"
  93.         exit 1
  94.     )
  95. )
  96.  
  97. # Vérifie si login.db existe
  98. if [ -f ${dossier_vsftpd}login.db ]
  99.     then
  100.         # Sauvegarde login.db
  101.         cp -v ${dossier_vsftpd}login.db \
  102.               ${dossier_vsftpd}login.db$extension_sauvegarde || (
  103.             exit 1
  104.         )
  105.  
  106.         # Supprime login.db
  107.         rm -v ${dossier_vsftpd}login.db || (
  108.             exit 1
  109.         )
  110. fi
  111.  
  112. # Converti le fichier login au format DB
  113. db${version_db}_load -T -t hash -f $dossier_vsftpd$fichier_login \
  114. ${dossier_vsftpd}login.db || (
  115.     # Vérifie si la sauvegarde de login.db existe
  116.     if [ -f ${dossier_vsftpd}login.db$extension_sauvegarde ]
  117.         then
  118.             # Restaure login.db
  119.             cp -v ${dossier_vsftpd}login.db$extension_sauvegarde \
  120.                   ${dossier_vsftpd}login.db || (
  121.                 exit 1
  122.             )
  123.     fi
  124.    
  125.     echo "Impossible de créer login.db"
  126.     exit 1
  127. )
  128.  
  129. # Restreint l'accès aux fichiers login
  130. chmod -v 600 ${dossier_vsftpd}login.* || (
  131.     exit 1
  132. )
  133.  
  134. # Vérifie si le dossier FTP existe
  135. if [ -d /home/ftp/$nom_d_utilisateur ]
  136.     then
  137.         # Supprime le dossier FTP
  138.         rm -vr /home/ftp/$nom_d_utilisateur || (
  139.             exit 1
  140.         )
  141. fi
  142.  
  143. # Supprime le fichier de configuration
  144. rm -v ${dossier_vsftpd}vsftpd_user_conf/$nom_d_utilisateur || (
  145.     exit 1
  146. )
  147.  
  148. echo "$nom_d_utilisateur a été supprimé"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement