Useradd utilisant la génération de mot de passe crypt

je travaille sur ce que je pensais être un script très simple pour créer dynamiquement un utilisateur FTP en utilisant 'useradd' il y a plusieurs parties de ce processus que je ne connais pas, et les recherches d'une journée entière ne m'ont pas amené trop loin. Voici ce que j'ai:

password="pass"
pass=$(perl -e 'print crypt($ARGV[0], "wtf")' $password)
useradd -d HOME_DIR -s /bin/bash -g GROUP -p $pass -f -1 testing

Notes

  1. HOME_DIR et GROUP are placeholders
  2. Je n'ai pas de problème avec la fonctionnalité home/base_dir (-d, -b) ou group (-g) de 'adduser'

Thèmes:

  1. Pourquoi mes efforts de génération de mot de passe ne fonctionnent pas?
  2. est /bin/bash le bon interpréteur de commandes à utiliser pour un simple utilisateur FTP, ou devrais-je utiliser /bin/false ou d'un autre shell?
  3. par défaut, useradd désactive un compte jusqu'à ce qu'ils fournissent leur propre mot de passe, Comment puis-je contourner cela?
  4. Je ne veux pas utiliser l'utilitaire passwd car il bloque ma capacité à générer automatiquement des comptes FTP, j'ai trouvé un la solution à ce ici, mais je ne comprends pas la solution

faites-moi savoir si je m'y prends mal, ou si ce que j'essaie de faire n'est pas possible ou si je suis mal informé au sujet de tout ce que j'ai déclaré ici. Merci pour toute aide que vous pouvez fournir. : D

15
demandé sur Community 2009-06-20 03:57:27

2 réponses

en ce qui concerne la génération de mots de passe:

32.3 Cryptage Des Mots De Passe

  • fonction: char * crypt (const char *, const char *sel)

    crypt fonction prend un mot de passe, , comme une chaîne, et un sel tableau de caractères décrit ci-dessous, et renvoie une chaîne ASCII imprimable qui commence avec un autre sel. Il est estimé que, compte tenu de la sortie de la fonction, la meilleure façon de trouver un qui va produire cette sortie est de deviner les valeurs de jusqu'à la valeur originale de est trouvé.

    sel paramètre fait deux choses. Tout d'abord, il sélectionne l'algorithme utilisé, celui basé sur MD5 ou celui basé sur DES. Deuxièmement, il rend la vie plus difficile pour quelqu'un qui essaie de deviner les mots de passe contre un fichier contenant de nombreux les mots de passe; sans sel, un intrus peut faire une supposition, run crypt une fois, et comparer le résultat avec tous les mots de passe. Avec un sel, l'intrus doit exécuter crypt une fois pour chaque sel.

    pour L'algorithme basé sur MD5, le sel doit être constitué de la chaîne $, suivi d'un maximum de 8 caractères, terminée par un autre $ ou la fin de la chaîne. Le résultat de la crypte sera le sel, suivi d'un $ si le sel n'a pas de fin avec un, suivi par 22 caractères de l'alphabet ./0-9A-Za-z, jusqu'à 34 caractères au total. Chaque personnage dans le est significatif.

    pour l'algorithme basé sur DES, le sel devrait être composé de deux caractères de l'alphabet ./0-9A-Za-z, et le résultat de crypt seront ces deux caractères suivis de 11 caractères supplémentaires du même alphabet, soit 13 au total. Seulement les 8 premiers les caractères dans le sont importantes.

    l'algorithme basé sur MD5 n'a pas de limite sur la longueur utile du mot de passe utilisé, et est légèrement plus sûr. Il est donc préférable à l'algorithme basé sur le DES.

    lorsque l'utilisateur entre son mot de passe pour la première fois, le sel doit être placé sur une nouvelle chaîne qui est raisonnablement aléatoire. Pour vérifier un mot de passe contre le résultat de l'appel précédent à la crypte, transmettre le résultat de l'appel précédent comme le sel.

selon votre système, il peut aussi y avoir des poissons-Mouches ou de la famille SHA-2

     ID       |    Method
  -------------------------------
     1        |  MD5 (Linux, BSD)
     2a       |  Blowfish (OpenBSD)
     md5      |  Sun MD5
     5        |  SHA-256 (Linux, since glibc 2.7)
     6        |  SHA-512 (Linux, since glibc 2.7)

cela dit, le

root# useradd -d / -g users -p $(perl -e'print crypt("foo", "aa")') -M -N foo
user$ su - foo
Password: foo
foo$ ^D
root# userdel foo

fonctionne très bien sur mon système.


en ce qui concerne le shell:

/sbin/nologin est traditionnel pour de connexion les utilisateurs handicapés. Vous devrez revérifier la configuration de votre démon FTP pour voir si cela les exclut de L'accès FTP.


en ce qui concerne le compte des personnes handicapées:

comme vu ci-dessus, fonctionne pour moi, comme prévu si donné un mot de passe de travail.


a Propos de l'autre solution:

Qu'est-ce que vous ne comprenez pas à propos de la solution alternative? Il semble très clair pour moi.

tout tuyau "username:password" dans "chpasswd".


si vous voulez des utilisateurs FTP uniquement, je vous recommande d'utiliser un démon FTP qui supporte les utilisateurs virtuels comme glftpd, Pure-FTPd, ProFTPD, vsftpd,... en fait, il semble que tous les communs le font. Ainsi, un compte FTP n'a pas besoin d'un vrai compte système.

25
répondu ephemient 2009-06-20 17:04:40

si vous voulez créer des utilisateurs "FTP seulement", vous devez regarder rssh Installez rssh pour votre distro, et définissez le shell pour l'utilisateur" FTP only " à "/ usr / bin/rssh"

Fonctionne très bien

1
répondu Mandar Vaze 2009-11-24 13:25:57