Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.90 KB | None | 0 0
  1. #!/bin/bash
  2. defaultPassword=3LywrM7vetirI #licenceAGSRI
  3. cronDeny=/etc/cron.deny
  4. cronAllow=/etc/cron.allow
  5. crontabs=/var/spool/cron/crontabs
  6. passwd=/etc/passwd
  7. usertoto=toto
  8. rep=/tmp/totoCron
  9. flag=0 #verification basic
  10. cronflag=0 #Vérification pour les standars de CRON peut prendre la valeur 0,1 ou 2 pour savoir la presence des ficheir cron.allow, cron.deny
  11. listeUser=()
  12. listeUserDeny=()
  13. listeUserFromDeny=()
  14. uidMin=1000 #UID minimal pour identifier un utilisateur "normal"
  15. uidMax=9999 #UID maximal pour identifier un utilisateur "normal"
  16.  
  17. #Pour exécuter ce script vous devez être superUSer
  18. if [ $UID -ne 0 ]; then
  19. echo "Vous devez avoir les privilèges du super utilisateur"
  20. exit 1
  21. else :
  22. fi
  23.  
  24. #Vérification de l'éxistence du fichier totoCron dans le repertoire /tmp/
  25. if [ -f $rep ]; then :
  26. else
  27. echo "Création du fichier $rep"
  28. touch $rep
  29. if [ $? -eq 0 ]; then :
  30. else
  31. echo "Impossible de créer le repertoire $rep"
  32. exit 1
  33. fi
  34.  
  35. fi
  36.  
  37. #Vérification de l'éxistence du fichier passwd dans le repertoire /etc/
  38. if [ -f $passwd ]; then :
  39. else
  40. echo "Le fichier $passwd est absent"
  41. exit 1
  42. fi
  43.  
  44. #Vérification des droit de l'ecture sur le fihier passwd
  45. if [ -r $passwd ]; then :
  46. else
  47. echo "Le fichier $passwd n'est pas accessible en lecture"
  48. exit 1
  49. fi
  50.  
  51. #Vérification de l'existence de l'utilisateur toto sur le système
  52. while read line
  53. do
  54. user=`echo ${line} | cut -f 1 -d ':'`
  55. if [ $user = $usertoto ]; then
  56. flag=0
  57. else :
  58. fi
  59. done < $passwd
  60.  
  61. #Si l'utilisateur toto n'est pas trouvé alors on le créé sinon on passe à l'étape suivante
  62. if [ $flag -ne "0" ]
  63. then
  64. `useradd --home /home/$usertoto --create-home --password $defaultPassword $usertoto 2>/dev/null`
  65. if [ $? -eq 0 ]
  66. then
  67. echo "L'utilisateur $usertoto a été créé avec succes"
  68. flag=1
  69. else
  70. echo "Erreur lors de la création de l'utilisateur $usertoto"
  71. fi
  72. else
  73. echo "[DEBUG] L'utilisateur $usertoto est déjà enregistré dans le système"
  74. fi
  75.  
  76.  
  77. if [ -f $cronAllow ]
  78. then
  79. cronflag=1
  80. echo "[DEBUG] Le fichier $cronAllow existe"
  81. else
  82. cronflag=0
  83. echo "[DEBUG] Le fichier $cronAllow n'éxiste pas"
  84. fi
  85.  
  86. if [ -f $cronDeny ]
  87. then :
  88. else
  89. echo "[DEBUG] Le fichier $cronDeny n'éxiste pas"
  90. fi
  91.  
  92. if [ -f $cronDeny ] && [ $cronflag -eq "0" ]
  93. then
  94. cronflag=2
  95. echo "[DEBUG] le fichier $cronAllow n'existe pas mais le fichier $cronDeny existe"
  96. else :
  97. fi
  98.  
  99. if [ $cronflag -eq "0" ]
  100. then
  101. echo "[DEBUG] Seul l'utilisateur root peut utiliser le service cron"
  102. exit 0
  103. else:
  104. fi
  105.  
  106. #Vérification de la présence de toto dans le fichier /etc/cron.allow
  107. if [ $cronflag -eq "1" ]
  108. then
  109. while read line
  110. do
  111. user=${line}
  112. if [ $user = $usertoto ]; then
  113. flag=0
  114. else
  115. flag=1
  116. fi
  117. done < $cronAllow
  118.  
  119. if [ $flag -eq "0" ]
  120. then
  121. sed -i -e "s/^$usertoto/ /g" $cronAllow
  122. sed -i -e "/ /d" $cronAllow
  123. echo "[DEBUG] L'utilisateur $usertoto ne peux plus utiliser le service cron"
  124. else :
  125. echo "[DEBUG] L'utilisateur $usertoto n'est pas autorisé à utiliser le service cron"
  126. fi
  127. else
  128. while read line
  129. do
  130. user=${line}
  131. if [ $user = $usertoto ]; then
  132. flag=0
  133. else
  134. flag=1
  135. fi
  136. done <$cronDeny
  137.  
  138. if [ $flag -ne "0" ]
  139. then
  140. sed -i -e "s/^$usertoto/ /g" $cronDeny
  141. sed -i -e "/ /d" $cronDeny
  142. echo "[DEBUG] L'utilisateur $usertoto ne peux plus utiliser le service cron"
  143. else
  144. echo "[DEBUG] L'utilisateur $usertoto est deny du service cron"
  145. fi
  146. fi
  147.  
  148. while read line
  149. do
  150. uidUser=`echo ${line} | cut -f 3 -d ":"`
  151. user=`echo ${line} | cut -f 1 -d ":"`
  152. if [ $uidUser -gt "999" ]
  153. then
  154. user=`echo ${line} | cut -f 1 -d ":"`
  155. listeUser+=($user)
  156. else :
  157. fi
  158. done < $passwd
  159.  
  160. echo ""
  161. echo "###[DEBUG] Liste des utilisateurs qui peuvent se connecter ###"
  162. i=0
  163. while [ $i -lt ${#listeUser[@]} ]
  164. do
  165. echo ${listeUser[$i]}
  166. i=$[$i+1]
  167. done
  168.  
  169. echo ""
  170. echo "###[DEBUG] Les utilisateurs en vert peuvent peuvent utiliser le service cron ###"
  171. if [ $cronflag -eq "1" ]
  172. then
  173.  
  174. while read line
  175. do
  176. userFromAllow=${line}
  177. listeUserFromAllow+=($userFromAllow)
  178. done < $cronAllow
  179.  
  180. i=0
  181. j=0
  182. flag=0
  183. T=${#listeUserFromAllow[@]} #problème avec le caractère d'échapement
  184. T=$[$T-1]
  185. while [ $i -lt ${#listeUser[@]} ]
  186. do
  187. j=0
  188. while [ $j -lt ${#listeUserFromAllow[@]} ]
  189. do
  190. if [ "${listeUser[$i]}" == "${listeUserFromAllow[$j]}" ] && [ "$j" == "$T" ]
  191. then
  192. echo -e "\e[0;32m ${listeUser[$i]}"
  193. elif [ "${listeUser[$i]}" == "${listeUserFromAllow[$j]}" ] && [ "$j" != $T ]
  194. then
  195. flag=1
  196. elif [ "${listeUser[$i]}" != "${line}" ] && [ "$j" == $T ] && [ "$flag" == "0" ]
  197. then :
  198. echo -e "\e[0;31m ${listeUser[$i]}"
  199. listeUserDeny+=(${listeUser[$i]})
  200. elif [ "${listeUser[$i]}" != "${line}" ] && [ "$j" == $T ] && [ "$flag" == "1" ]
  201. then
  202. echo -e "\e[0;32m ${listeUser[$i]}"
  203. flag=0
  204. else :
  205. fi
  206. j=$[$j+1]
  207. done
  208. i=$[$i+1]
  209. done
  210. else
  211. while read line
  212. do
  213. userFromDeny=${line}
  214. listeUserFromDeny+=($userFromDeny)
  215. done < $cronDeny
  216.  
  217. #echo "[DEBUG] ${#listeUser[@]}"
  218. #echo "[DEBUG] ${#listeUserFromDeny[@]}"
  219.  
  220. #i=0
  221. #while [ $i -lt ${#listeUserFromDeny[@]} ]
  222. #do
  223. # echo ${listeUserFromDeny[$i]}
  224. # i=$[$i+1]
  225. #done
  226.  
  227. i=0
  228. j=0
  229. flag=0
  230. T=${#listeUserFromDeny[@]} #problème avec le caractère d'échapement
  231. T=$[$T-1]
  232. while [ "$i" -lt "${#listeUser[@]}" ]
  233. do
  234. #echo "[DEBUG] User$i = ${listeUser[$i]}
  235. j=0
  236. while [ "$j" -lt "${#listeUserFromDeny[@]}" ]
  237. do
  238. if [ "${listeUser[$i]}" != "${listeUserFromDeny[$j]}" ] && [ "$j" == "$T" ] && [ "$flag" == "0" ]
  239. then
  240. echo -e "\e[0;32m ${listeUser[$i]}"
  241. elif [ "${listeUser[$i]}" == "${listeUserFromDeny[$j]}" ] && [ "$j" == "$T" ]
  242. then
  243. echo -e "\e[0;31m ${listeUser[$i]}"
  244. listeUserDeny+=(${listeUser[$i]})
  245. elif [ "${listeUser[$i]}" == "${listeUserFromDeny[$j]}" ] && [ "$j" != "$T" ]
  246. then
  247. echo -e "\e[0;31m ${listeUser[$i]}"
  248. listeUserDeny+=(${listeUser[$i]})
  249. flag=1
  250. elif [ $flag == "1" ] && [ "$j" == "$T" ]
  251. then
  252. flag=0
  253. else :
  254. fi
  255. j=$[$j+1]
  256. #i=0
  257. #while [ $i -lt ${#listeUserFromDeny[@]} ]
  258. #do
  259. # echo ${listeUserFromDeny[$i]}
  260. # i=$[$i+1]
  261. #done
  262. done
  263. i=$[$i+1]
  264. done
  265. fi
  266. echo ""
  267.  
  268. if [ -d $crontabs ]; then :
  269. else
  270. echo "[DEBUG] Aucune crontabs de définie"
  271. exit 0
  272. fi
  273.  
  274. i=0
  275. while [ $i -lt ${#listeUserDeny[@]} ]
  276. do
  277. ls $crontabs | grep ${listeUserDeny[$i]} > /dev/null
  278. if [ $? -eq 0 ]
  279. then
  280. echo "[DEBUG] Attention il existe des contabs pour l'utilisateur ${listeUserDeny[$i]}"
  281. echo "[DEBUG] Les crontabs de ${listeUserDeny[$i]} sont supprimer"
  282. sup=$crontabs
  283. sup+="/${listeUserDeny[$i]}"
  284. rm $sup
  285. sup=""
  286. else
  287. echo "[DEBUG] Il n'y a pas de crontabs pour l'utilisateur ${listeUserDeny[$i]}"
  288. fi
  289. i=$[$i+1]
  290. done
  291. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement