2 votes

comment créer des utilisateurs à la volée

C'est juste une mauvaise idée que je viens d'avoir.

Existe-t-il un moyen de créer des comptes utilisateurs à la volée ?

Disons que j'ai créé une vm Ubuntu, et que je veux donner l'accès à un groupe de personnes. Mais pour une raison quelconque, je ne me soucie pas particulièrement de ce qu'ils en font.

Comment puis-je faire en sorte que lorsque l'utilisateur A se connecte au vm, le compte de l'utilisateur soit automatiquement créé ?

et oui, je sais qu'en théorie, je pourrais simplement créer un compte d'invité et le partager avec les personnes qui ont besoin d'un accès. mais alors un tas de personnes partageront le compte et je veux également enregistrer ce que tout le monde a fait, donc les avoir sur le même compte rendrait les choses très difficiles.

et oui, c'est une très mauvaise idée.

1voto

meuh Points 3016

J'aime les défis. Oui, vous pouvez le faire, si vous êtes prêt à laisser les premier ssh échouer. Le script suivant (que j'ai testé en réalité) suit le processus d'authentification de sshd log, qui par défaut (sur mon système) produit des lignes comme celles-ci sur une connexion ssh échouée :

Jun 20 21:06:35 home sshd[18163]: Invalid user dummy from ::1

Lorsqu'une telle ligne est trouvée, l'identifiant de l'utilisateur (fictif dans cet exemple) est extrait et un accès utilisateur est créé. extrait et un compte utilisateur est créé avec un mot de passe crypté qui est le même que l'id. mot de passe crypté identique à l'identifiant de l'utilisateur (fictif). Une deuxième tentative de connexion fonctionnera maintenant.

# encrypt a cleartext password given as arg
cryptpw(){
        perl -e '
        my $pw = "'"$1"'";
        my $salt = join("",("a".."z")[rand 26,rand 26]);
        printf "%s\n", crypt($pw,$salt);'
}

sudo journalctl --no-pager -lfu sshd | 
while read line
do    if [[ "$line" =~ "Invalid user "([^ ]*) ]]
      then  newuser=${BASH_REMATCH[1]}
            pw=$(cryptpw "$newuser")
            sudo useradd "$newuser" -p "$pw"
      fi
done

L'utilisateur peut alors copier sa clé sur la télécommande :

ssh-copy-id dummy@host

S'ils n'ont pas encore de clé, commencez par en avoir une :

ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -N ''

0voto

heemayl Points 85741

使用方法 python :

#!/usr/bin/env python2
import re, crypt, subprocess

with open('/var/log/auth.log') as logfile, open('/etc/passwd') as passfile:
    given_usernames = []
    for line in logfile:
        name = re.search(r'(?<= Invalid user ).*?(?= from)', line)
        if name:
            given_usernames.append(name.group())

    current_usernames = []
    for line in passfile:
         current_usernames.append(re.search(r'^[^:]+', line).group())

    for i in given_usernames:
        if i not in current_usernames:
            password = crypt.crypt(i + str(123), 'foobar12')
            subprocess.call('sudo useradd -m -p {0} {1}'.format(password, i).split())
  • Lorsqu'un utilisateur essaie de se connecter à un ordinateur via ssh qui n'a pas de compte existant se verra refuser l'accès à la connexion et cet incident sera enregistré dans la base de données de l'UE. /var/log/auth.log fichier comportant une ligne, par exemple :

    Jun 21 01:11:03 my_hostname sshd[17763]: Invalid user foobar from 192.168.4.2
  • nous allons exploiter cette ligne pour extraire le nom d'utilisateur fourni et créer un compte pour cet utilisateur afin qu'il puisse se connecter sans problème la prochaine fois.

  • Nous avons utilisé le mot de passe comme le nom d'utilisateur donné plus 123 (le sel est foobar12 ), c'est-à-dire que si un nom d'utilisateur est spamegg le mot de passe sera spamegg123 . Vous pouvez changer le mot de passe et le sel à n'importe quelle valeur et bien sûr, l'utilisateur doit changer le mot de passe après la première connexion.

  • Dans cette approche, tous les noms d'utilisateurs de la base de données du /var/log/auth.log sont pris dans une liste et de la même façon, tous les noms d'utilisateurs de /etc/passwd sont également pris dans une liste.

  • Ensuite, nous avons vérifié si le nom d'utilisateur saisi existe déjà, si non, l'utilisateur est créé avec le mot de passe mentionné précédemment.

  • Vous pouvez l'exécuter en tant que cron pour s'assurer que les noms d'utilisateur sont ajoutés automatiquement.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X