• # Peut être parce que ...

    Posté par  . Évalué à 2.

    ... adduser n'admet pas d'argument '-p' ... useradd si.
    • [^] # La solution, c'est d'utiliser la fonction crypt

      Posté par  . Évalué à 1.

      adduser n'admet pas d'argument '-p' ... useradd si.

      N'importe comment, il s'attend à ce qu'on lui donne déjà crypté, d'après le man :
      -p mot_de_passe
            Le mot de passe chiffré, comme renvoyé par crypt(3). Le com-
            portement par défaut est de désactiver le compte.


      Pour avoir un mot de passe DES (le format "classique") :
      my $pass_des = crypt($mot, salt(2));

      Pour avoir un mot de passe MD5 (c'est plutôt ce format qui est utilisé sous linux actuellement) :
      my $pass_md5 = crypt($mot, '$1$' . salt(8) . '$');


      sub salt {
          my @space = unpack 'C*', "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./";
          my $result = '';
          for (my ($n) = @_; $n > 0; --$n) {
              $result .= chr($space[random(scalar @space)]);
          }
          return $result;
      }

      « Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone

      • [^] # Compléments

        Posté par  . Évalué à 1.

        Il manquait la fonction random.
        En fait elle est toute simple (son seul intérêt, c'est qu'elle était partagée par plusieurs fonctions, et donc que ça facilitait un éventuel changement).

        sub random {
            my ($sup) = @_;
            return int rand $sup;
        }


        Cela dit, tant qu'à faire, on peut écrire une version moins verbeuse (mais probablement moins performante) de salt :
        sub salt {
            my @space = unpack 'C*', join '', 'A'..'Z', 'a'..'z', 0 .. 9, "./";
            return join '', map { chr($space[int rand scalar @space]); } 1 .. $_[0];
        }

        « Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.