Accueil

Mettre en place un utilisateur de test

Par mushroom.

Ce document est placé dans le Domaine Public.

Lorsqu'on développe des scripts avec des rm -fr toutes les deux lignes, il est parfois délicat de garder son sang froid lorsqu'on les exécute pour les tester.

C'est pourquoi ce qui suit va vous montrer comment mettre en place un utilisateur sacrifiable à merci à ce genre de choses.

Sommaire

Préparer le compte de l'utilisateur de développement

Afin de profiter au maximum de notre utilisateur « crash test », nous allons le piloter à partir du dossier de notre utilisateur -- appelons-le hacker -- de développement.

Cela suppose cependant d'ouvrir son dossier en lecture aux membres de son groupe initial. Or, comme par défaut le groupe initial de tous les utilisateurs sous Slackware est users, un effet de bord indésirable sera que tous les utilisateurs auront accès en lecture au dossier de hacker. C'est pourquoi nous allons, à l'instar de ce qui se fait sur d'autres distributions, redéfinir un groupe plus restreint en tant que groupe initial.

Tout d'abord, nous créeons à cette fin un groupe hacker :

# groupadd hacker

Ensuite, nous attribuons ce groupe en tant que groupe initial à hacker :

# usermod -g hacker hacker

Ne reste plus qu'à initialiser les propriétés du dossier utilisateur de hacker (/home/hacker dans notre exemple et en toute logique) puis à l'ouvrir en lecture pour tous les membres du groupe :

# chown :hacker -R /home/hacker
# chmod 750 /home/hacker

Voilà, nous avons à présent des bases solides pour passer aux choses sérieuses.

Ajouter l'utilisateur de test

En premier lieu, nous allons créer un nouveau compte utilisateur. Comme nous n'avons pas besoin de toutes les définitions de la commande adduser, nous allons pour ce faire employer useradd :

# useradd -g hacker -s '/bin/bash' -d /home/hacker scrat

Ici nous avons appelé notre utilisateur scrat, défini son groupe initial en tant que hacker, indiqué qu'il utilisait /bin/bash comme interpréteur (mettez celui utilisé par votre utilisateur de développement, si ce n'est pas celui-ci) et spécifié /home/hacker en tant que dossier utilisateur.

Ne reste qu'à lui donner un mot de passe, et il sera fin prêt :

# passwd scrat

Définir un environnement adéquat

Pour le moment scrat a un dossier utilisateur uniquement accessible en lecture. C'est un peu le but recherché puisque c'est précisément /home/hacker que nous voulons préserver des excès d'intelligence de nos programmes. De plus cela permet à scrat de partager toute la configuration exitante de hacker, en faisant un véritable clone de ce dernier.

Cependant, cela va vite montrer ses limites lorsque des commandes (développées par nous, peut-être) vont vouloir écrire dans le dossier de scrat ou lorsque nous auront besoin de tester diverses configurations. C'est pourquoi nous allons modifier le .bashrc de hacker afin de redefinir dynamiquement un dossier dédié à scrat tout en partageant la configuration que nous souhaitons avec hacker :

Placez ce code à un endroit adéquat du .bashrc (ou du fichier correspondant à l'interpréteur de votre utilisateur), à savoir entre les initialisations qui doivent être faites aussi pour 'scrat' et ce qui requiert des droits en écriture dans le dossier utilisateur.

if [ $(whoami) = scrat ]; then
    # Si ce .bashrc n'est pas exécuté en tant que scrat,
    # on reconfigure l'environnement.

    # Le "home" temporaire.
    THM=/tmp/testing-$UID
    if [ "$INIT_TESTING" -o ! -d $THM ]; then
        # Si INIT_TESTING est définie, ou s'il n'existe pas, on initialise le "home".
        rm -rf $THM
        mkdir -p 750 $THM
        (   cd $THM
            # On crée des liens symboliques pour tout ce qu'on souhaite partager
            # (en lecture, bien entendu).
            for CF in .bashrc .inputrc .vimrc; do
                ln -s $HOME/$CF
            done
        )
        unset INIT_TESTING
    fi
    # On redéfinit HOME et USER.
    export HOME=$THM USER=$(whoami)
fi

Ainsi lorque nous appelerons scrat, il initialisera si nécessaire /tmp/testing qu'il emploiera comme dossier utilisateur et partagera à l'aide de liens symboliques toute la configuration souhaitable (modifiez iles liens à créer pour obtenir ce que vous voulez).

Appeler notre nouvel utilisateur

Tout est à présent en paré pour martyriser à loisir notre pauvre scrat. Il suffit juste de l'invoquer comme suit :

$ su scrat

Ou comme ceci si vous souhaitez réinitialiser son dossier utilisateur :

$ INIT_TESTING=1 su scrat

Vous pourrez ensuite tranquillement exécuter avec lui vos créations les plus expérimentales. Happy coding! ^_^

Thèmes : #administration #articles #developpement #mushroom

Sauf indication contraire, ce document est placé sous licence CC-BY-SA 3.0.