Gestion des utilisateurs sous FreeBSD
Un article de DocAstairs.
Sommaire |
[modifier] Intro
Sur un système *nix ou linux, il est une partie importante qui consiste à pouvoir gérer ses utilisateurs. Il y a des opérations simples et d'autre plus complexes pour avoir un système qui répond le plus possible à vos attentes. Un bon admin doit donner ce dont les utilisateurs ont besoin, pas plus et pas surtout pas moins.
Caractéristique | Signification | Description |
---|---|---|
Username | le login de l'utilisateur | Le login de l'utilisateur est limité (pour des raisons historique) à 16 caractères. |
Full name | son vrai nom | Ce champ assez spécifique peut contenir d'autres informations, comme le numéro de téléphone ou quelque chose dans le genre. Il est possible d'utiliser le caractère ":". |
Uid | son identifiant | Chaque utilisateur possède un identifiant unique (de 0 pour le compte root à 32000) |
Gid | l'identifiant du/des groupe(s) au(x)quel(s) il appartient | Chaque utilisateur peut appartenir a un ou plusieurs groupes. Les groupes ont un identifiant (Gid) également compris entre 0 et 32000. |
Login class | la class dont il dépend | Les class pour les utilisateurs permettent de donner des droits ou faire des restriction plus fine pour des profils d'utilisateur. |
Shell | le shell qu'il utilise | Chaque utilisateur a un shell. Sont proposés typiquement sur FreeBSD : sh, csh, tcsh, zsh et nologin. |
password | son mot de passe | Un mot de passe (assez fort de préférence). |
Home | son répertoire personnel | Le home directory est par défaut dans /usr/home/le_login_utilisateur. |
Locked | s'il est bloqué ou pas | Il est possible de bloquer un compte utilisateur. Par exemple, un stagiaire qui vient et qui n'as pas a se connecter quand il n'est pas la.... |
[modifier] Les fichiers
Avant toute chose, je vous déconseil très fortement d'éditer ces fichiers à la main. Ce sont des bases de données système et il existe des commandes faites pour ça.
- /etc/master.passwd (Base de donnée des utilisateurs)
user:$1$JSd.OVbp$59VQrvAI6CLaqg1OJsXQo/:1002:1002::0:0:nom de user,0123456789,0123456789,0123456789,info:/home/user:/bin/sh
- /etc/passwd (fichiers password en format version 7)
user:*:1002:1002:nom de user,0123456789,0123456789,0123456789,info:/home/user:/bin/sh
- /etc/login.conf (Base de données des possibilité des utilisateurs)
default:\ :passwd_format=md5:\ :copyright=/etc/COPYRIGHT:\ :welcome=/etc/motd:\ :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\ :path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin ~/bin:\ :nologin=/var/run/nologin:\ :cputime=unlimited:\ :datasize=unlimited:\ :stacksize=unlimited:\ :memorylocked=unlimited:\ :memoryuse=unlimited:\ :filesize=unlimited:\ :coredumpsize=unlimited:\ :openfiles=unlimited:\ :maxproc=unlimited:\ :sbsize=unlimited:\ :vmemoryuse=unlimited:\ :priority=0:\ :ignoretime@:\ :umask=022:
- /etc/group (Base de données des groupes)
user:*:1002:
- /var/log/userlog (Fichier de log des modification sur les utilisateurs/groupes)
2007-04-10 11:47:22 [root:groupadd] user(1002) 2007-04-10 11:47:22 [root:useradd] user(1002):user(1002):nom de user:/home/user:/bin/sh 2007-04-10 11:47:22 [root:useradd] user(1002) home /home/user made
[modifier] Les commandes
J'ai presque envie de dire que sur FreeBSD il n'y a qu'une commande pour tout faire :
root@freebsd# pw
Les autres commandes (adduser, rmuser, passwd, ...) ne font qu'appeler la commande pw.
[modifier] Ajouter un utilisateur
Pour ajouter un utilisateur il existe la commande interactive adduser
root@freebsd# adduser Username: user1 Full name: user1 name Uid (Leave empty for default): Login group [user1]: Login group is user1. Invite user1 into other groups? []: Login class [default]: Shell (sh csh tcsh bash nologin) [sh]: Home directory [/home/user1]: Use password-based authentication? [yes]: Use an empty password? (yes/no) [no]: Use a random password? (yes/no) [no]: Enter password: ***** Enter password again: ***** Lock out the account after creation? [no]: Username : user1 Password : ***** Full Name : user1 name Uid : 1002 Class : Groups : user1 Home : /home/user1 Shell : /bin/sh Locked : no OK? (yes/no): yes adduser: INFO: Successfully added (user1) to the user database. Add another user? (yes/no): no Goodbye!
Qui a pour équivalent avec pw :
root@freebsd# pw useradd -n user1 -m -s /usr/local/bin/bash -h fd
[modifier] Modifier un utilisateur
La commande chpass permet d'éditer les information sur un utilisateur spécifique :
root@freebsd# chpass user1
aura pour effet d'editer (avec vi) les informations pour l'utilisateur spécifié
#Changing user information for user1. Login: user1 Password: $1$NAtiwKmB$0bOtkYvuq3Zl1/tpjtHrC1 Uid [#]: 1002 Gid [# or name]: 1002 Change [month day year]: Expire [month day year]: Class: Home directory: /home/user1 Shell: /usr/local/bin/bash Full Name: User & Office Location: Office Phone: Home Phone: Other information:
Et vous n'avez qu'à écrire ce qu'il faut changer, enregistrer et quitter (ESCAPE ":wq" sous vi).
Idem avec avec pw
root@freebsd# pw usermod user1 //(suivi des options et valeurs à changer)
[modifier] Modifier le mot de passe d'un utilisateur
La commande passwd permet de changer son propre mot de passe, ou celui d'un utilisateur si cette dernière est suivi du nom de l'utilisateur.
root@freebsd# passwd /permet de changer le mot de passe root root@freebsd# passwd user1 /permet de changer le mot de passe de user1
Avec pw :
root@freebsd# pw usermod user1 -h fd
[modifier] voir les information sur un utilisateur
Il peut être pratique de voir les informations sur un ou des utilisateurs de façon plus lisible qu'en affichant le contenu de /etc/master.passwd
root@freebsd# pw usershow user1 user1:$1$bhElJsHj$0ZumkS1W5ahQ2kuizw0QR1:1002:1002::0:0:User &:/home/user1:/usr/local/bin/bash root@freebsd# pw usershow user1 -P Login Name: user1 #1002 Group: user1 #1002 Full Name: User User1 Home: /home/user1 Class: Shell: /usr/local/bin/bash Office: [None] Work Phone: [None] Home Phone: [None] Acc Expire: [None] Pwd Expire: [None] root@freebsd# pw usershow -a root:*:0:0::0:0:Adm.servertest:/root:/usr/local/bin/bash toor:*:0:0::0:0:Bourne-again Superuser:/root: daemon:*:1:1::0:0:Owner of many system processes:/root:/usr/sbin/nologin operator:*:2:5::0:0:System &:/:/usr/sbin/nologin bin:*:3:7::0:0:Binaries Commands and Source:/:/usr/sbin/nologin tty:*:4:65533::0:0:Tty Sandbox:/:/usr/sbin/nologin kmem:*:5:65533::0:0:KMem Sandbox:/:/usr/sbin/nologin games:*:7:13::0:0:Games pseudo-user:/usr/games:/usr/sbin/nologin news:*:8:8::0:0:News Subsystem:/:/usr/sbin/nologin man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/usr/sbin/nologin sshd:*:22:22::0:0:Secure Shell Daemon:/var/empty:/usr/sbin/nologin smmsp:*:25:25::0:0:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin mailnull:*:26:26::0:0:Sendmail Default User:/var/spool/mqueue:/usr/sbin/nologin bind:*:53:53::0:0:Bind Sandbox:/:/usr/sbin/nologin proxy:*:62:62::0:0:Packet Filter pseudo-user:/nonexistent:/usr/sbin/nologin _pflogd:*:64:64::0:0:pflogd privsep user:/var/empty:/usr/sbin/nologin _dhcp:*:65:65::0:0:dhcp programs:/var/empty:/usr/sbin/nologin uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/local/libexec/uucp/uucico pop:*:68:6::0:0:Post Office Owner:/nonexistent:/usr/sbin/nologin nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin user1:*:1002:1002::0:0:User &:/home/user1:/usr/local/bin/bash
[modifier] Supprimer un utilisateur
La commande rmuser supprime un utilisateur moyennant deux confirmations (êtes vous sur de vouloir effacer cet utilisateur et voulez vous supprimer son répertoire personnel). Si vous êtes sur de votre coup, l'option -y est la.
root@freebsd# rmuser -y user1
Son équivalent avec pw :
root@freebsd# pw userdel user1 -r
Quand un utilisateur est supprimé, sont automatiquement supprimés ses cronjobs, ses atjobs ainsi que son spool de mail et d'impression.
[modifier] Conclusion sur la commande pw
En somme, on s'aperçoit rapidement de la puissance de cette commande un peu hostile à l'apprentissage, mais tellement pratique dans les scripts. Elle permet de faire bien d'avantage que ce qui est décrit ci-dessus, comme la création de home directory d'après un squelette existant ou la gestion des dates de validité des comptes, etc.