|
(2849 mots dans ce texte ) -
lu : 1052 Fois
 Intro
Nous rentrons dans l'action proprement dite. Dans le tutoriel précedent, nous nous sommes contentés d'observer le démarrage du système. Maintenant qu'il est lancé, il faut l'administrer et la première tâche d'un administrateur est la gestion des groupes, des utilisateurs et des permissions des fichiers.
-1-Les groupes et les utilisateurs
-1-1-Les fichiers
/etc/passwd
/etc/passwd contient les informations sur les utilisateurs, il est lisible
par tout le monde et ne contient pas les mots de passe, ceux-ci étant
encryptés dans le fichier /etc/shadow La syntaxe du fichier est la
suivante:
[nom de l'utilisateur]:x:PID:GID:[détermine le répertoire de
travail]:[répertoire personnel]:[type de shell]
Le x représente le mot de passe, il indique qu'un mot de passe encrypté
existe que le système ira chercher dans /etc/shadow
Le PID est le numéro de l'utilisateur, le GID, celui de son groupe.
Par exemple, le premier utilisateur qui porte le PID 0 , est root :
root:x:0:0::/root:/bin/bash
Note : vous pouvez par l'intermédiare de ce fichier
changer le nom de l'utilisateur root. Cela peut être un élément de sécurité
supplémentaire. Ou juste plus fun...
Le premier utilisateur lambda créé lors de l'installation porte le pid 1000 et le
gid 100 :
tux:x:1000:100::/home/tux:/bin/bash
Les groupe et utilisateurs dont le PID ou le GID est inférieur à 1000 et 100 sont les groupes et utilisateurs spéciaux que le système crée par défaut. Ne les effacez pas, ils ont tous leur utilité. Nous ne pouvons pas les détailler ici car leurs noms et leurs fonctions sont variables suivant l'environnement. Quand vous créerez de nouveaux utilisateurs manuellement, donnez-leur un PID non utilisé bien sûr et supérieur à 1000. Même remarque pour les groupes
/etc/shadow
C'est dans ce fichier que l'on retrouve les mots de passe encryptés. Ce
fichier n'est accéssible qu'à root et aux processus lancés par root, bien
entendu. Vous pouvez y jeter un oeil, en root utilisez less, cat, more ou
most, qui ne font qu'afficher le contenu d'un fichier sans pouvoir
accidentellement écrire dans celui-ci.
Vous y trouverez le nom de chaque utilisateur suivi du mot de passe
encrypté ou d'une étoile s'il n'y a pas de mot de passe, puis les paramètres
qui déterminent la durée de validité du compte (généralement vides)
/etc/group
Comme le fichier passwd contient les utilisateurs, le fichier group
contient les informations sur les groupes, la syntaxe du fichier est tout à
fait semblable :
[groupe]:[mot de passe]:[GID]:[liste d'utilisateurs]
/etc/gshadow
-1-2-Les commandes
Note : Les commande que je vais vous citer ici peuvent varier d'une distro à l'autre, adduser peut être transformé en useradd.
-1-2-0-S'informer sur les utilisateurs et les groupes
users, who
users renvoie un simple listing des utilisateurs connectés sur la machine.
who liste les utilisateurs conectés sur le système, sans argument, il renvoie une réponse comme celle-ci :
### [~] $ who
paranoiak tty2 2007-09-03 20:20
zafx :0 2007-09-03 20:18
zorg :1 2007-09-03 20:44
Mais avec le paramètre -a, nous voyons des choses plus complexes apparaitre :
who -a
2007-09-03 20:17 934 id=si term=0 exit=0
system boot 2007-09-03 20:17
run-level 4 2007-09-03 20:17 last=S
2007-09-03 20:17 2288 id=rc term=0 exit=0
LOGIN tty1 2007-09-03 20:17 2763 id=c1
paranoiak + tty2 2007-09-03 20:20 16:06 2764
LOGIN tty3 2007-09-03 20:17 2765 id=c3
LOGIN tty4 2007-09-03 20:17 2766 id=4
2007-09-03 20:17 2766 id=c4
LOGIN tty5 2007-09-03 20:17 2775 id=5
2007-09-03 20:17 2775 id=c5
LOGIN tty6 2007-09-03 20:17 2778 id=6
2007-09-03 20:17 2778 id=c6
2007-09-03 20:17 2781 id=x1
zafx ? :0 2007-09-03 20:18 ? 2846
zorg ? :1 2007-09-03 20:44 ? 5004
-1-2-1-Comment ajouter un groupe
L'utilitaire groupadd
La commande est simple, c'est un petit programme binaire. Il fera ce que vous pouvez faire
aussi facilement à la main.
groupadd [nom du nouveau groupe]
Manuellement
Ajoutez une ligne au fichier /etc/group avec un GID inemployé, à partir de 100. Puis editez
le fichier passwd pour ajouter le groupe aux utilisateurs.
-1-2-2-Comment détruire un groupe
groupdel
Manuellement
Il suffit d'effacer la ligne correspondant dans le fichier group. Puis
effacez le nom du groupe des lignes corespondant aux utilisateurs qui en
faisaient partie dans le fichier passwd.
-1-2-3-Comment ajouter un utilisateur
Methode rapide : adduser ou useradd
Cette méthode est recommandée
Méthode manuelle
-1-2-4-Comment supprimer un utilisateur
userdel
Pour effacer aussi le home :
userdel -r [user]
Manuellement
Modifier les paramètres d'un utilisateur
usermod
-1-2-5-Comment changer un mot de passe
La commande est très simple:
passwd [nom de l'utilisateur]
Sans nom d'utilisateur, s'applique à l'utilisateur courant. On vous
demande l'ancien mot de passe puis de rentrer le nouveau deux fois (pour
prévenir les erreurs de frappe).
-1-2-6-J'ai perdu mon mot de passe root! help me!
Ouai, vous êtes vraiment négligeant. Je ne suis pas sûr que vous méritiez
cette astuce, moi. Il suffit d'effacer le x de la ligne root du fichier
/etc/passwd mais vous ne pourrez le faire qu'avec les droits root. L'astuce
consiste à lancer un livecd ou un rescuecd, celui de cotre distribution par
exemple, et de procèder à cette manipulation douteuse depuis cet autre
environnement. Au redemarrage, vous devrez commencer par réattribuer un mot
de passe à root car il n'en aura plus!
Pour tous ceux qui lisent cette section et qui n'ont pas perdu leur mot de passe root, que cette manip vous serve de base à une réflexion sur la sécurité d'un système : quand on a l'accès physique à la machine, toute sécurité est illusoire.
-2-Les permissions des fichiers
-2-1-S'informer sur les fichiers
La commande à utiliser est ls. ls vous donne le contenu d'un répertoire, ou les détails d'un fichier. sans argument il s'applique au répertoire courant et ne donne que le nom des fichiers mais pas les fichiers cachés (les fichiers cachés sont précédés d'un point et n'apparaissent que lorsqu'on le demande formellement):
tux@darkstar:~$ ls
Desktop/ film/ musique/
tux@darkstar:~$ ls film
mes-vacances.mkv
Pour avoir tous les détails sur les fichiers, utilisez les argument -la:
tux@darkstar:~$ls -la [nom du fichier]
Si aucun nom de fichier ou de répertoire n'est indiqué, ls liste le répertoire courant.
-a : affiche les fichiers cachés
-l affiche les détails des fichiers.
Dans le cas du listage d'un répertoire, les deux premières lignes du résultat vous indiquent les propriétés du répertoire lui-même et celles du parent. Ici le répertoire courant /home/tux et son parent /home
Voici un exemple :
tux@darkstar [~/photo] $ ls -la
total 97768
drwxr-x--- 4 tux tux 144 2007-06-09 10:49 ./
drwx--x--x 42 tux tux 3896 2007-06-23 21:07 ../
-rw-r----- 1 tux tux 100009677 2007-04-12 18:35 tuxette-en-maillot-de-bain.jpg
drwxr-xr-x 2 tux tux 1328 2007-04-17 17:47 diaporama/
drwxr-xr-x 2 tux tux 504 2007-05-27 05:50 screenshots/
Remarquez la notation des deux premières lignes, [./] et [../] La première ligne indique les détails du répertoire ~/photo, la seconde, ceux du parent du répertoire photo : /home/tux/
Prenons maintenant un exemple précis :
drw-r--r-- 1 tux users 88 2007-02-06 20:58 film/
la séquence [drw-r--r-- 1 tux users] nous interesse particulièrement.
Le premier caractère donne le type de fichier global, c'est ici un [d] (directory), cela pourrait être un tiret [-] (pour un autre type de fichier) ou un L minuscule [l] (pour un lien, le fichier cible apparait alors à la fin de la ligne)
Les trois caractères suivant [rw-] représentent les permissions du propriétaire du fichier, les trois [r--] suivants pour le groupe et les trois derniers [r--] pour les autres utilisateurs :
r=read
w=write
x=execute
Le tiret indique que le droit n'existe pas.
Ce fichier par exemple est lisible par tout le monde, ne peut être modifié que par son propriétaire et n'est exécutable par personne.
Nous avons ensuite les noms du propriétaire (tux) et du groupe propriétaire (users) du fichier puis la taille du fichier (88 Ko), sa date et son heure de création (2007-02-06 20:58) et enfin son nom.
-2-2-Modifier le propriétaire et le groupe
On change le propriétaire d'un fichier par la commande chown (change owner = changer de propriétaire) :
chown [nom du nouveau propriétaire] [nom du fichier]
Par exemple :
chown tuxette film
Attention, après ça, vous ne pourrez plus manipuler ce fichier, n'ayant plus les droits en écriture!
Pour changer le groupe, la commande est chgrp (est-il besoin de traduire?)
chgrp [nom du nouveau groupe] [nom du fichier]
Exemple :
chgroup multimédia film
-2-3-Modifier les permissions
Pour changer les permissions d'un fichier, on utilise la commande chmod, comme ceci:
chmod [a, u, g, o] [+/-] [r, w, x, s, t] [fichier]
a = All : tout le monde, u + g + o
u = User : l'utilisateur propriétaire du fichier
g = Group : le groupe propriétaire du fichier
o = Other : les autres utilisateurs
+ = ajoute un droit
- = supprime un droit
r = Read
w = Write
x = eXecute pour un fichier ou accès pour un répertoire
s = Set-uid ouset-gid (droit spécial)
t = sTicky (permission spéciale)
Exemples :
chmod a+r : ajoute l'accès en écriture à tout le monde
chmod a-r : enlève l'accès en écriture à tout le monde
chmod g-w : enlève au groupe l'accès en écriture
chmod o+x : ajoute l'accès en exécution aux utilisateurs non propriétaires.
Vous pouvez aussi modifier finement les permissions à l'aide de chiffres, par exemple:
chmod 755 film : donne au propriétaire tous les droits et au groupe ainsi qu'aux autres utilisateurs le droit en lecture et en exécution. Comment ça marche? Hé bien chaque permission est représenté par un nombre en octal :
r=lecture=4
w=écriture=2
x=exécution=1
Les trois chiffres que vous passez en argument à chmod correspondent à la somme des permissions en octal pour les trois types d'utilisateur : le propriétaire, le groupe et les autres :
7=4+2+1=r+w+x : pour le propriétaire
5=4+0+1=r+x : pour le groupe
5=4+0+1=r+x : pour le reste de l'univers
Ça peut vous parraitre complexe mais en fait, comparez les deux commandes équivalantes de cet exemple :
Pour un fichier ayant les droits par defaut rwx r-x r-x, soit 755, auquel on veut appliquer les droits rw-rw---- soit 660 :
chmod a-x g+w o-r
Et :
chmod 660
Les deux commandes ont un résultat identique. L'une est quand même plus simple que l'autre, non?
-2-4-Les droits spéciaux
On a by-passé, un peu plus haut, quand nous avons étudié les options de chmod, ces droits particuliers qui correspondent aux lettres [s] et [t], ce sont des droits spéciaux applicables aux répertoires et aux fichiers :
Le set-uid vous donne l'uid du propiétaire du fichier lors de son execution. Inutile de vous dire qu'en général, on utilise ce droit pour des commande administrateur. En abuser est fortement déconseillé.
Le set-gid sur un répertoire force l'appartenance des fichiers créés à l'interieur de ce répertoire au groupe auquel il appartient.
Le sticky donne la permission à tout le monde d'écrire dans un répertoire mais pas celle d'effacer les fichiers qui ne lui appartiennent pas. Le sticky-bit sur un fichier autre qu'un répertoire est ignoré, il correspond à une ancienne fonction d'unix qui permettait d'excuter un fichier en swap.
Pour vous donner un exemple de répertoire avec le sticky-bit, le répertoire /tmp, appartient à root mais possède le bit sticky, tout le monde peut y écrire mais pas accéder aux fichiers temporaires des autres utilisateurs, par exemple (ce n'est pas ainsi que vous aurez accès au cache thunderbird de Tuxette).
Les droits set-uid, set-gid et sticky prennent la place de l'attribut [x] dans les droits d'un fichier :
rwS rwS rwT
On peut les ajouter avec chmod en faisant comme ceci:
chmod u+s [file] : ajoute le droit set-uid
chmod g+s [file] : ajoute le droit set-gid
chmod +t [file] : ajoute le droit sticky
Bien sûr, on peut établir ces droits en octal. Il faut alors ajouter un quatrième nombre avant les trois qui correspondent aux droits normaux, par exemple :
chmod 1755 [file]
Ici, on ajote le droit sticky.
Le code en octal s'exprime comme suit :
1 : sticky
2 : sgid
4 : suid
Tux a décidé de créer un répertoire partagé, sur une partition montée dans /mnt/commons/ À l'intérieur de cette partition, root crée plusieurs répertoires film/ photo/ :
root@darkstar [/mnt/commons] # mkdir film photo
root@darkstar [/mnt/commons] # groupadd commons
root@darkstar [/mnt/commons] # chown tux film photo
root@darkstar [/mnt/commons] # chgrp commons film photo
-2-5-umask
Quand vous créez un fichier, quel que soit le programme avec lequel vous le créez, il sera écrit avec des droits, par défault, cela devrait être 0755. Pourquoi cela?
À chaque création de fichier, le système applique un masque aux permissions, faute de quoi les fichiers seraient créés avec les permissions 0777
-3-Du bon usage des groupes, des utilisateurs et des permissions
-3-1-De la sécurité des comptes
On peut comparer un mot de passe à une clef qui ouvre une serrure. De même
qu'une serrure peut toujours être forcée, un mot de passe peut toujours être
cracké, ce n'est qu'une question de temps. Le meilleur moyen de garantir sa
sécurité est de limiter l'accès à la porte. Comme le montre la petite manip
que je viens de vous expliquer pour vous dépanner en cas de perte du mot de
passe root, quiquonque a un accès physique à la machine peut grosso-modo
faire ce qu'il veut.
Pour une utilisation personnelle à la maison, le problème de l'accès
physique ne se pose pas vraiment. Cet aspect concerne plutôt les entreprises
et les serveurs. Quoique... Méfiez-vous des mômes, elevés à la sauce linux,
il deviennent vite dangereux.
On dit qu'un bon mot de passe est long et mélange les lettres et les
chiffres, les majuscules et les minuscules. En effet, plus il est complexe,
plus le mot de passe est dur à cracker.
La meilleure des protection restant quand même l'impossibilité pour
quiquonque d'accéder au compte root. Ainsi, même avec le mot de passe
adéquat, le risque disparait. Vous pouvez choisir le niveau de paranoïa de
votre système en modifiant quelques fichiers clef.
/etc/login.devfs
Limiter le nombre d'essais de connection :
LOGIN_RETRIES 5
Limiter le nombre d'essai pour changer le mot de passe
(il faut rentrer l'ancien mot de passe pour le changer) :
PASS_CHANGE_TRIES 5
Obliger l'utilisateur à rentrer su root au lieu de su :
SU_NAME su #### commentez cette ligne
N'autoriser le login en root que dans certaines consoles
:
CONSOLE /etc/securetty #renvoie au fichier concerné (par
defaut)
#CONSOLE console:tty1:tty2:tty3:tty4 #pour définir
manuellement
Autoriser la connection sans mot de passe pour les utilisateurs
dans certains terminaux :
#NO_PASSWORD_CONSOLE tty1:tty2:tty3 #pour activer cette fonction,
décommentez cette ligne
Ce dernier paramètre est fortement déconseillé, est-il besoin de le dire mais la possibilité existe, il faut le souligner.
Modifier la durée de validité des mots de passe :
PASS_MAX_DAYS [nombre]
(-1 désactive la fonction)
Et le nombre de jours durant lesquel un message d'avertissement dira à
l'utilisateur que son mot de passe arrive à expiration :
PASS_WARN_AGE [1]
Ces deux derniers paramètres peuvent être définis individuellement pour
chaque compte utilisateur, à la création du compte avec adduser.
Pour interdire à l'usager qui ne fait pas partie du groupe wheel
de se logguer en root :
SU_WHEEL_only no #passez no à yes
Sous debian, dans le fichier /etc/pam.d/su, décommentez la ligne:
#auth sufficient pam_rootk.so
Ceci interdira la commande su root, vous obligeant à passer en root dans
un terminal tty et uniquement à l'invite de login.
Changer le nom du compte root
Il est possible de changer le nom du compte root, en éditant le fichier
/etc/passwd et en en modifiant la ligne du compte root. C'est le PID qui
détermine le superutilisateur, vous pouvez donc changer le nom du compte pour
celui que vous voulez, superman, psychoid, megatux, etc. Comme la commande su
ne prend que le nom d'utilisateur en argument, cela peut constituer une
sécurité supplémentaire ou juste se reveler plus rigolo.
Retour à la sous-rubrique :
Autres publications de la sous-rubrique :
|