Quelqu'un pourrait-il écrire ou m'aider à rédiger un script bash qui aurait les effets suivants:
Un nouvel utilisateur se connecte à mon serveur FreeBSD et se connecte via SSH avec certaines informations d'identification telles que 'enregistrement d'utilisateur, enregistrement de passe' ou quelque chose de similaire. Il est accueilli avec une bannière lui indiquant quoi faire ensuite et un script est lancé pour demander à l'utilisateur de son identifiant d'étudiant. Ensuite, un nouvel utilisateur est créé avec un mot de passe aléatoire et l'ID fourni. Un courrier électronique est envoyé à [email protected] contenant le mot de passe (en tant que méthode de vérification de l'étudiant). Après cette procédure, l’étudiant a un nouveau compte limité sur mon serveur avec l’identifiant fourni et un mot de passe aléatoire et modifiable.
L'idée est de faire un script qui est souvent utilisé dans l'enregistrement MUD ou la création de comptes shell.
Je suppose que le script doit être exécuté lors de la connexion, stocker les informations d'identification fournies dans un champ, puis les transmettre à une commande sudo'ed adduser. Je n'ai qu'une compréhension de base des scripts Unix et apprécierais toute aide.
MODIFIER:
Ok, j'ai donc essayé quelque chose par moi-même:
#! /usr/local/bin/bash
clear
echo "--------------------------------------------------"
echo " "
echo " Welcome to FreeBSD community server! "
echo " "
echo "--------------------------------------------------"
echo
echo To create a new account enter your album number:
read ALBUM
if [ -d "/home/$ALBUM" ]; then
echo ""
echo "User already exists!"
echo ""
read
exit
else
PASSWORD=`cat /dev/urandom |tr -cd A-Za-z0-9 | head -c 8`
echo "Your FreeBSD server password is:
$PASSWORD
If you did not request one, ignore this message." | mail -s "Auth Credentials" [email protected]
echo ""
echo "Thank you, a new user has been created and a mail containing your password"
echo "was sent to [email protected]"
echo ""
sudo pw useradd $ALBUM -d /home/$ALBUM -s /usr/local/bin/bash -m
echo $PASSWORD | sudo pw mod user $ALBUM -h 0
read
exit
fi
Ok, c'est ce que je suis venu avec. Aucune suggestion? L'utilisateur par lequel le script est exécuté est un sodoer avec nopasswd pour utiliser l'outil pw. En outre, le script est autoran avec 'source'.
Réponses:
Vous pouvez essayer d'écrire un script simple avec lequel vous remplaceriez le shell standard pour l'utilisateur d'enregistrement (dans / etc / passwd). Ce script invoquerait un script d'enregistrement simple via sudo (l'ajout d'un nouvel utilisateur nécessitera un utilisateur privilégié). Considérez les problèmes de sécurité de cette approche - c'est juste une idée, je ne l'ai pas essayée.
la source
Vous devez faire très attention lors de la vérification de l'entrée de l'utilisateur et de l'utilisation de cette entrée, afin d'éviter toute intrusion malveillante dans votre système. Par exemple, que se passe-t-il si l'utilisateur parvient à incorporer ":", des nouvelles lignes ou des backticks dans son nom d'utilisateur?
En outre, vous devriez peut-être envisager d'exécuter votre script newuser sans privilèges root. Ainsi, il ne peut pas modifier
/etc/passwd
, mais aurait besoin de vous envoyer les informations d’enregistrement par courrier électronique (ou quelque chose de similaire).Envisagez également de lancer l'enregistrement
sshd
processus dans une prison ou dans un environnement de machine virtuelle pour minimiser les conséquences d’une intrusion. Ce ne sont que des suggestions.la source
Pour mémoire, je suis allé avec:
la source