IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

[Shell] Bash : script de gestion d'utilisateurs


Sujet :

Linux

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [Shell] Bash : script de gestion d'utilisateurs
    bonjour,

    voila j'ai un script pour créer des utilisateurs avec un fichier rempli en .txt

    le fichier comptes.txt est fait comme ceci
    login mdp groupe
    les variables sont les suivantes :
    $1 login
    $2 pour le mot de passe
    $3 pour le groupe

    voici le script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/bash 
    IFS=$' '; 
    cat comptes.txt | 
    { 
    while read ligne; do 
    set ${ligne}; 
    echo "login:${1} mot de passe:${2} groupe:${3}"; 
    useradd ${1} -d /var/home/${3} -s /bin/false; 
    usermod -g ${3} ${1}; 
    echo ${1}:${2} | chpasswd 
    done; 
    }

    après divers tests, tous fonctionne
    le script s'exécute sans messages d'erreurs
    la ligne echo login... me permet de vérifier que les variables sont exactes

    les questions que je me pose :

    les utilisateurs créés via le script sont récupérés dans un fichier texte avec deux noms pour tester

    test1, test2 et deux groupes :groupe1,groupe2

    test1 dans le groupe1, test2 dans le groupe2
    les utilisateurs sont créés, il apparaissent dans /etc/passwd
    quand je fais la commande "groups test1" je reçois la réponse test1 : groupe1
    et pour test2 groupe2. donc pas de soucis

    mais si j'édite /etc/group je devrais avoir

    groupe1: x :102:pascal,pierre,test1
    groupe2: x :103:sylvain,alex,test2

    mais les utilisateurs test1 et 2 ne se rajoute pas.

    est-ce normal ?

    pour l'instant cela fonctionne mais j'aimerais comprendre

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par techafi Voir le message
    mais les utilisateurs test1 et 2 ne se rajoute pas.
    est-ce normal ?
    Oui

    Citation Envoyé par techafi Voir le message
    pour l'instant cela fonctionne mais j'aimerais comprendre
    Il existe sous unix deux notions de groupes
    1) le groupe primaire => c'est le 4° champ de "/etc/passwd"
    2) le groupe secondaire => si tu es dans ce groupe alors ton nom apparait dans le 4° champ de "/etc/group"
    D'un point de vue "droits", cela ne change rien. Aucun groupe n'est plus fort qu'un autre. C'est juste la façon de stocker ces infos qui est comme ça

    Exemple 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /etc/passwd
    toto:x:100:500:...:...:...:/bin/bash
     
    /etc/group
    groupeX:x:500:...
    Donc bien que "toto" n'apparaisse pas dans "/etc/group, il fait quand-même partie du groupe "groupeX" grace au lien 500

    Exemple 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /etc/passwd
    toto:x:100:500:...:...:...:/bin/bash
     
    /etc/group
    groupeX:x:500:...
    groupeY:x:700:toto
    Ici, toto fait toujours partie du groupe "groupeX" (qui est son groupe de base) mais comme il est listé dans le groupe Y, il en fait aussi partie. Il appartient donc à 2 groupes ce qui est tout à fait autorisé

    Accès aux fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -r--r-----   root groupeX     ...    fichier1
    -r--r-----   root groupeY     ...    fichier2
    -r--r-----   root groupeZ     ...    fichier3
    Si toto veut accèder au fichier 1, comme il fait partie du groupeX, il pourra le lire. Idem pour le fichier 2 car il fait aussi partie du groupeY. Mais comme il ne fait pas partie du groupe Z il ne pourra pas accéder au fichier 3.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [bash] Script de gestion d'onduleur
    Par skiliss dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 16/05/2013, 17h02
  2. script shell bash
    Par arnaud9742 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 26/07/2010, 12h59
  3. Gestion des utilisateurs en bash
    Par sdow dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 27/01/2009, 01h30
  4. [Shell Script] Quel est l'utilisateur d'un terminal ?
    Par damien27000 dans le forum Linux
    Réponses: 3
    Dernier message: 25/07/2007, 16h37
  5. Script Shell Bash
    Par kolfred dans le forum Linux
    Réponses: 4
    Dernier message: 06/10/2006, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo