[Bash] Scripts vsftpd
|
19-02-2014, 14h51
(Modification du message : 24-02-2014, 10h54 par Ekroz.)
Message : #1
|
|
Ekroz
![]() Membre actif ![]() Messages : 77 Sujets : 13 Points: 43 Inscription : May 2013 |
[Bash] Scripts vsftpd
Bonjour à toute la communauté N-PN !
Cela fait un moment que l'on ne me voit plus trop, rassurez-vous je n'ai toujours pas été kidnappé par les Illuminatis. Je suis actuellement en stage dans une PME et j'ai pour mission de créer un serveur FTP (j'ai choisi vsftpd pour sa sécurité). J'ai remarqué que la création, la modification et la suppression d'utilisateurs virtuels "à la main" était un travail de longue haleine lorsqu'il s'agit de gérer plusieurs dizaines de comptes. J'ai donc codé 4 scripts Bash afin d'automatiser :
Je partage donc le code source si jamais vous êtes confronté un jour à ce cas, libre à vous donc de le réutiliser, le modifier et le partager. N'étant pas un 1337 h4xx0r du Bash, n'hésitez pas à faire des remarques concernant les scripts, me proposer des améliorations, le but premier étant de faire quelque chose de sécurisé, rapide et simple. Amicalement, Ekroz. |
|
19-02-2014, 15h39
Message : #2
|
|
Junky
![]() Snorky Master ![]() Messages : 228 Sujets : 35 Points: 204 Inscription : Mar 2013 |
RE: [Bash] Scripts vsftpd
Bonjour,
Merci du partage. ![]() Sans vouloir aller chercher la p'tit bête, tu devrais imo passer par des variables et éviter de mettre en dur les path des files. Si un jour pour une question ou une autre tu dois changer de rep, tes scripts deviennent pénibles a modifier. Tu peux faire un truc du genre: Code BASH :
Si un jour, tu changes de repertoire, tu aura besoin de modifier QUE les variables et non tout le programme. En plus en mettant en place cette dynamique, ca te permet de faire une fonction de check. Plein de fois dans ton code tu vas checker si le backup d'un fichier c'est bien réaliser. Donc a chaque fois tu poses un: Code BASH :
Dans le premier script tu en as 4 ou 5.. N'oublie pas qu'en dev a partir du moment ou tu fais 2 fois la même chose, il faut faire une fonction. ![]() Donc un truc du genre: Code BASH :
Après dans l'ensemble si ca fait le taf j'ai envie de dire GG. Mais regarde un peu plus sur l'optimisation de ton code... ![]() Ah oui dans le 4ème script, mis WTF le if... Il déroule sur 4km le truc... Je l'ai survolé seulement (j'suis au taf pas eu le tps de le lire correctement) mais en revenant sur mon idée précédente de fonction, il y a surement de faire un truc vachement plus propre... ![]() Bon courage. Junky Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier
|
|
19-02-2014, 22h33
Message : #3
|
|
gruik
![]() gouteur de savon ![]() Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: [Bash] Scripts vsftpd
salut Ekroz & merci du partage
![]() j'ai lu un peu en diagonale les différents scripts, déjà comme dit Junky vu le nombre de fois où tu check si un fichier existe tu auras tout intérêt à faire une fonction file_exists() ou similaire, d'autre part la quasi totalité des commandes sous linux renvoient également un code de retour dont tu peux tirer parti, par exemple : Code BASH :
cp source destination && echo "fichier copié OK" || (echo "echec copie fichier"; exit 1) la commande `cp' retournera un code différent de zéro si elle échoue, les opérateurs `&&' et `||' permettent de chainer des commandes selon la valeur renvoyée, selon le cas ton code pourra gagner en lisibilité et/ou en concision Code BASH :
# Crée le fichier PAM && Vérifie si le fichier PAM a été créé d'autre part comme dit les commandes sous linux renvoient un code, du coup tes scripts s'ils sont bien faits ne devraient pas déroger à la règle et quand quelque chose foire mettre un `exit 1' au lieu d'un simple `exit' qui par défaut renverra 0 (== tout s'est bien déroulé) dans ton premier script pour ta fonction qui check pam_userdb.so je te propose la tournure suivante : Code BASH :
libs=" la procédure de check des packages est à mon avis à revoir et à fiabiliser, la façon dont elle est construite est beaucoup trop hasardeuse et c'est pas cohérent avec la rigidité des tests effectués à coté (comme le fait de checker systématiquement qu'un fichier a bien été créé alors qu'on est root par exemple ![]() plutot que d'utiliser aptitude pour checker alors que derrière tu installes avec apt-get, je te conseille aussi d'utiliser dpkg, je te propose : Code BASH :
VERSION_DB="5.1" enfin, on sent un peu que le script de suppression devait être le dernier et que t'en avais marre (lol); on trouve pas moins de 8 imbrications de IF, ça n'est pas lisible et donc pas raisonnable ![]() donc le propos est simple, plutôt que de tourner les tests comme ceci : Code : if condition; then Code : if not condition; then le code gagne tout de suite en lisibilité ![]() my 2 cts |
|
21-02-2014, 14h20
Message : #4
|
|
thxer
![]() :(){ :|:& };: ![]() Messages : 382 Sujets : 60 Points: 162 Inscription : Feb 2013 |
RE: [Bash] Scripts vsftpd
Merci à vous trois .
|
|
24-02-2014, 10h57
Message : #5
|
|
Ekroz
![]() Membre actif ![]() Messages : 77 Sujets : 13 Points: 43 Inscription : May 2013 |
RE: [Bash] Scripts vsftpd
Merci beaucoup pour vos réponses, j'ai pu mettre à jour mes scripts selon vos conseils.
Les liens Pastebin ont été mis à jour et pour ceux qui ont la flemme de remonter en haut du topic, les voici :
|
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
[BASH] Autoban iptables | thxer | 3 | 2,123 |
13-08-2014, 19h04 Dernier message: thxer |
|
[BASH] Interface User Friendly | saywoot | 3 | 2,122 |
28-01-2014, 21h18 Dernier message: saywoot |
|
[BASH] Connaitre les utilisateurs avec un le nom suivant | InFamouZz | 8 | 3,907 |
27-01-2014, 15h39 Dernier message: notfound |
|
[Bash] explorer son /home dans un pipemenu Openbox | supersnail | 2 | 1,758 |
28-10-2013, 17h08 Dernier message: thxer |
|
[Bash] programme d'installation | InstinctHack | 0 | 924 |
12-09-2012, 10h08 Dernier message: InstinctHack |
|
[Php/Bash] Importer une base de donné de plus de 5Mo | CyberSee | 1 | 1,164 |
29-02-2012, 23h28 Dernier message: InstinctHack |
Utilisateur(s) parcourant ce sujet : 2 visiteur(s)