Chap2 Administration Systeme UNIX 2eme SI

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 32

Administration des systèmes UNIX:

Gestion des utilisateurs,


Gestion des permissions
&
Automatisation des tâches

Aymen Ferjani
[email protected]

Institut Supérieur des Sciences Appliquées et Technologie de Mateur


2ème année SI

1 / 32
Plan

1 Recherche de fichiers

2 Gestion des utilisateurs

3 Gestion des permissions

4 Gestion des services

5 Automatisation des tâches

6 Exercices

2 / 32
Plan

1 Recherche de fichiers

2 Gestion des utilisateurs

3 Gestion des permissions

4 Gestion des services

5 Automatisation des tâches

6 Exercices

3 / 32
La commande find

La commande find est la plus ancienne commande de recherche de


Linux, elle n’utilise pas de base indexée et son exécution peut donc
parfois être longue, mais elle est très complète par ses critères de
recherche :
-name : recherche selon le nom.
-type : recherche selon le type (d : dossier, f : fichier,...).
-user : recherche selon le propriétaire du fichier.
-ctime : recherche par date de dernière modification.
find /home/etudiant -name "*.java" -type f
#recherche les fichiers seulement sous le dossier
#personnel dont le nom se termine par ".java"

4 / 32
locate, which et whatis

La commande locate est plus rapide que find car elle utilise une
base de données automatiquement mise à jour. Par contre, locate a
beaucoup moins de critères de recherche que find :
locate "/home/etudiant/*.java"
#renvoi tous les fichiers et dossiers depuis le
#dossier personnel dont le nom se termine par ".java"

La commande which est utilisée pour trouver l’emplacement d’une


commande :
which bash
#renvoi: /bin/bash

La commande whatis cherche des commandes dans le système de


fichiers mais en utilisant une base de données. Elle renvoi une
courte description de la commande trouvée.

5 / 32
Plan

1 Recherche de fichiers

2 Gestion des utilisateurs

3 Gestion des permissions

4 Gestion des services

5 Automatisation des tâches

6 Exercices

6 / 32
Créer un nouvel utilisateur
La création d’un nouvel utilisateur se fait par la commande useradd
selon cette syntaxe :
useradd nom_utilisateur

Par défaut, le nouvel utilisateur est créé selon la configuration


présente dans le fichier /etc/default/useradd.
Le super-utilisateur root et les sudoers sont les seuls qui peuvent
utiliser cette commande.
Pour créer un utilisateur avec son dossier personnel, on ajoute
l’option -m.
On peut choisir le shell par défaut de l’utilisateur avec l’option -s.
On peut spécifier le groupe primaire de l’utilisateur avec l’option -g.
useradd -m -s /bin/bash -g etudiant ahmed
#création de l'utilisateur ahmed avec son dossier
#personnel et son shell par défaut /bin/bash et
#l'affecter au groupe primaire etudiant

7 / 32
La commande sudo et les sudoers

Les sudoers sont les utilisateurs qui font partie du groupe sudo.
Cela leur permet d’exécuter des commandes avec les privilèges de
l’utilisateur root.
Ces utilisateurs devront alors placer la commande sudo chaque fois
qu’ils veulent exécuter une commande avec les privilèges de root.
Exemple :
sudo useradd -m -s /bin/bash -g etudiant ahmed
#un mot de passe est ensuite demandé pour confirmer
#l'identité du sudoer

La gestion des utilisateurs et des groupes est uniquement permise à


l’utilisateur root et aux sudoers.

8 / 32
Créer un nouvel utilisateur
Lors de la création d’un utilisateur, le contenu du dossier /etc/skel
est copié automaitquement dans le dossier personnel de l’utilisateur
(si l’option -m a été utilisée avec useradd).
Chaque utilisateur possède un identifiant ou UID. Ce dernier varie
entre 1000 et 60000 pour les systèmes Debian.
On peut modifier cet interval ainsi que d’autres valeurs de
configuration propre au login avec le fichier /etc/login.defs.
Pour activer un utilisateur, l’administareur(ou un sudoer) doit lui
définir un mot de passe avec la commande passwd :
passwd ahmed
#définit ou modifie le mot de passe de ahmed

L’utilisateur lui-même, une fois connecté, peut modifier son mot de


passe avec la même commande :
passwd
#modifie le mot de passe de l'utilisateur courant

9 / 32
Les groupes
Un utilisateur appartient au moins à un groupe. C’est le groupe
primaire. Les autres groupes auxquels il appartient sont les groupes
secondaires.
Par défaut, dans les Linux récents, un utilisateur est créé avec un
groupe primaire dont le nom est identique à l’utilisateur.
Pour voir la liste des groupes auxquels appartient un utilisateur, on
peut utiliser la commande id ou groups :
id
#affichage: uid=1000(etudiant) gid=1000(etudiant)
#groupes=1000(etudiant),4(adm),24(cdrom),27(sudo),...

Chaque utilisateur possède un ou plusieurs identifiants de groupes


ou GID. Ce dernier varie aussi entre 1000 et 60000 pour les
systèmes Debian.
Un groupe permet de partager les mêmes privilèges à tous ses
utilisateurs membres.

10 / 32
Les groupes

Pour créer un nouveau groupe on utilise la commande groupadd,


pour en supprimer on utilise groupdel. Ces commandes mettent à
jour le fichier /etc/group.
Pour gérer les utilisateurs d’un groupe, il y a la commande
gpasswd :
L’option -a ajoute un utilisateur à un groupe donné.
L’option -d enlève un utilisateur d’un groupe donné.
Exemple :
gpasswd -a ahmed etudiant
#ajoute ahmed au groupe etudiant

Pour modifier le nom d’un groupe, on utilise groupmod avec


l’option -n :
groupmod etudiant -n issatm
#renommer le groupe etudiant en issatm

11 / 32
Modifier et supprimer un utilisateur

La modification d’un compte se fait par la commande usermod.


L’option -l permet de changer le nom de l’utilisateur :
usermod ahmed -l mounir
#renommer l'utilisateur ahmed en mounir

L’option -s modifie le shell par défaut.


L’option -d modifie le dossier personnel.
L’option -g modifie le groupe primaire.
La suppression d’un compte est réalisée par la commande userdel.
L’option -r permet de supprimer aussi le dossier personnel et
son contenu.
userdel -r mounir
#supprimer l'utilisateur mounir avec son
#dossier personnel

12 / 32
Gestion des utilisateurs / Fichiers de configuration

Le fichier /etc/passwd contient les informations des utilisateurs


structurées en sept colones séparées par " :" et qui sont : login, mot
de passe ou "x" s’il existe un fichier /etc/shadow, UID, GID,
description de l’utilisateur, dossier personnel et le shell par défaut :
cat /etc/passwd
#affiche des lignes ayant la forme suivante:
#ahmed:x:1003:1001:commentaires:/home/ahmed:/bin/bash

La majorité des distributions Linux utilise le fichier /etc/shadow


pour stocker les mots de passe cryptés. Ce fichier est protégé en
lecture et écriture.

13 / 32
Gestion des utilisateurs / Fichiers de configuration

Le fichier /etc/login.defs contient les informations par défaut sur


la validité des comptes et des mots de passe des utilisateurs :
MAIL_DIR : répertoire mail par défaut(/var/spool/mail).
UID_MIN, UID_MAX : plage des numéros UID possibles.
GID_MIN, GID_MAX : plage des numéros GID possibles.
CREATE_HOME : création automatique d’un dossier personnel.
PASS_MAX_DAYS : nombre maximum de jours d’utilisation
d’un mot de passe.
PASS_MIN_DAYS : nombre minimum de jours entre deux
changements de mot de passe.
PASS_MIN_LEN : longueur minimale d’un mot de passe.
PASS_WARN_AGE : nombre de jours d’envoi d’un
avertissement avant que le mot de passe n’expire.

14 / 32
Gestion des utilisateurs / Expiration d’un compte

La commande chage permet de consulter et modifier les valeurs de


validité d’un mot de passe utilisateur :
-l : donne les valeurs actuelles du compte.
-E : permet de fixer une date d’expiration du compte sous la forme
AAAA-MM-JJ.
-M : configure le nombre maximum de jours pendant lesquels un
mot de passe est valable.
-m : définit le nombre minimum de jours entre deux changements
de mot de passe.
-W : configure le nombre de jours d’avertissement avant que le
changement de mot de passe ne soit obligatoire.
chage -M 2 ahmed
#le mot de passe de ahmed sera expiré dans 2 jours
#il devra alors le changer durant cette période

15 / 32
Plan

1 Recherche de fichiers

2 Gestion des utilisateurs

3 Gestion des permissions

4 Gestion des services

5 Automatisation des tâches

6 Exercices

16 / 32
Les permissions(droits d’accès)
On distingue trois catégories d’utilisateurs :
u : le propriétaire (user).
g : le groupe auquel appartient le fichier.
o : les autres utilisateurs.
a : désigne tous les utilisateurs.
Ainsi que trois types de droits :
r : lecture(read), valeur octale = 4.
w : écriture(write), valeur octale = 2.
x : exécution(execute), valeur octale = 1.
- : pas de droit, valeur octale = 0.
Pour consulter les droits d’accès d’un fichier donné :
ls -ld chemin_fichier

Les permissions sont les 9 caractères qui se trouvent juste après le


premier(qui représente le type du fichier). Parmi ces 9 caractères,
les 3 premiers sont les permissions du propriétaire, les 3 suivants
sont les permissions du groupe et les 3 derniers sont les permissions
des autres utilisateurs.
17 / 32
La commande chmod

Linux permet de spécifier les droits dont disposent les utilisateurs sur un
fichier(en général) par la commande chmod.

#ajoute le droit d'exécution au propriétaire


chmod u+x script.sh

#enlève les droits de lecture et modification du groupe


chmod g-rw fich1

#affecte les droits rwx au propriétaire, rw au groupe


#et r au autres
chmod u=rwx,g=rw,o=r fich1

#ajoute le droit à l'exécution pour tout le monde


chmod a+x test.sh

18 / 32
Notation octale avec chmod

La notation octale est utilisée pour affecter les permissions à toutes les
catégories. Il s’agit d’effectuer, pour chaque catégorie, la somme des
droits qu’on veut affecter. Cette somme varie de 0 à 7(valeur octale) :

#affecte les droits rwx(=7) au propriétaire,


#rw(=6) au groupe, et r(=4) au autres
chmod 764 fich1

#affecte tous les droits à tout le monde (à éviter)


chmod 777 test.sh

#affecte les droits rw(=6) au propriétaire,


#rx(=5) au groupe, et rien au autres
chmod 650 fich2

19 / 32
La commande umask
Lorsqu’on crée un nouveau fichier, par exemple avec la commande touch,
ce fichier possède certains droits par défaut. La commande umask
permet de changer ces droits par défaut. Les droits sont indiqués de façon
"inverse" en notation octale. Il s’agit d’indiquer le complément à 666 :

#affecte les droits rw-r--r-- par défaut pour chaque


# nouveau fichier créé
umask 022

#affecte les droits rw-rw---- par défaut pour chaque


# nouveau fichier créé
umask 006

Il est impossible d’attribuer le droit à l’exécution par défaut sur un


fichier. Par contre, c’est possible pour les dossiers.
Pour connaîte les droits par défaut pour chaque nouveau dossier créé, il
faut calculer le complément à 777.

20 / 32
Les droits spéciaux
Il existe trois droits spéciaux, SUID, SGID et Sticky Bit. Ils
peuvent être positionnés par la commande chmod :
SUID :(Set User ID) lorsque le SUID est positionné, une
commande se lancera avec les droits de son propriétaire. Sa valeur
octale est 4 et son symbôle est s. Exemples :
chmod u+s script.sh
chmod 4755 script2.sh
SGID :(Set Group ID) lorsque le SGID est positionné, une
commande se lancera avec les droits de son groupe. Sa valeur
octale est 2 et son symbôle est s. Exemples :
chmod g+s script.sh
chmod 2750 script2.sh
Sticky Bit : lorsque le Sticky Bit est positionné sur un dossier, ce
dernier ne pourra être supprimé ou renommer que par son
propriétaire. Sa valeur octale est 1 et son symbôle est t. Exemples :
chmod o+t mon_dossier
chmod 1775 mon_dossier2
21 / 32
Plan

1 Recherche de fichiers

2 Gestion des utilisateurs

3 Gestion des permissions

4 Gestion des services

5 Automatisation des tâches

6 Exercices

22 / 32
Gestion des services
Les services ou démons sont des programmes qui tournent
en arrière plan et qui sont généralement lancés par le système au
démarrage.
Traditionellement, la commande service permet de gérer les
services présents dans le système.
Pour lister tous les services :
service --status-all
Pour lancer un service, on ajoute l’argument start après le nom du
service (par exemple mysql) :
service mysql start
Pour arrêter un service, on ajoute l’argument stop après le nom du
service :
service mysql stop
Pour redémarrer un service, on ajoute l’argument restart après le
nom du service :
service mysql restart

23 / 32
Gestion des services
Pour les systèmes GNU/LINUX qui utilisent systemd (depuis 2015) :
Lister tous les services :
systemctl --type=service

Lancer un service (par exemple mysql) :

systemctl start mysql.service

Arrêter un service (par exemple mysql) :

systemctl stop mysql.service

Redémarrer un service (par exemple mysql) :

systemctl restart mysql.service

24 / 32
Plan

1 Recherche de fichiers

2 Gestion des utilisateurs

3 Gestion des permissions

4 Gestion des services

5 Automatisation des tâches

6 Exercices

25 / 32
La commande crontab
Il est possible de programmer des tâches périodiques avec la
commande crontab.
Le service cron permet de gérer des tables d’exécution de tâches
périodiques (crontabs) : une table pour chaque utilisateur et une
table pour le système. Les tables des utilisateurs sont enregistrées
dans les fichiers /var/spool/cron/nom_utilisateur et sont
éditées par les utilisateurs à l’aide de l’outil crontab. La table cron
du système se trouve dans le fichier /etc/crontab.
crontab -l : affiche la liste des tâches programmées.
crontab -e : permet d’éditer la table cron.
crontab -u : permet à l’administrateur de gérer la table cron d’un
autre utilisateur.
crontab -r : supprime la table cron.
Par défaut chaque utilisateur peut utiliser la commande crontab.
Pour restreindre cette possibilité, on peut utiliser les fichiers
/etc/cron.allow(liste des utilisateurs autorisés) et
/etc/cron.deny(liste des utilisateurs non autorisés).
26 / 32
La commande crontab
Le format d’une ligne dans la table cron est le suivant :
minutes(0-59) heures(0-23) jour du mois(1-31) mois(1-12) jour de
la semaine(0-6) commande.
Pour le jour de la semaine, 0 signifie dimanche.
#lancer script.sh toutes les minutes
* * * * * /home/etudiant/script.sh

#lancer script.sh toutes les 5 minutes


*/5 * * * * /home/etudiant/script.sh

#lancer script.sh tous les jours à 8h30


30 8 * * * /home/etudiant/script.sh

#lancer script.sh chaque lundi toutes les 2 heures


0 */2 * * 1 /home/etudiant/script.sh

#lancer script.sh chaque premier jour du mois chaque


#heure entre 14h00 et 17h00
0 14-17 1 * * /home/etudiant/script.sh
27 / 32
La commande at

La commande at peut être utilisée pour programmer l’exécution


d’une tâche à un moment donné.
Le service atd gère les tâches planifiées par la commande at.
On peut lister les tâches planifiés avec atq ou at -l.
Pour annuler une tâche planifiée, on utilise atrm :
atrm numéro_tâche

Par défaut, seul l’utilisateur root peut utiliser la commande at.


Cette configuration peut être modifiée avec les fichiers
/etc/at.allow(liste des utilisateurs autorisés) et /etc/at.deny(liste
des utilisateurs non autorisés).

28 / 32
La commande at

Exemples :
#lancer script.sh après 5 minutes
at now + 5 minutes
at>/home/etudiant/script.sh
at>^d

#lancer script.sh à 20h30 aujourd'hui


at 20:30
at>/home/etudiant/script.sh
at>^d

#lancer script.sh à 8h30 après 2 jours


at 8:30 + 2 days
at>/home/etudiant/script.sh
at>^d

29 / 32
Plan

1 Recherche de fichiers

2 Gestion des utilisateurs

3 Gestion des permissions

4 Gestion des services

5 Automatisation des tâches

6 Exercices

30 / 32
Exercices

Quelle commande permet de créer un utilisateur user1 qui


appartient au groupe auf ?
 useradd -m -g user1 auf
 useradd -m user1 -group auf
 add -m -g auf user1
 useradd -m -g auf user1
Le répertoire suivant contient les fichiers qui seront copiés
dans le dossier personnel au moment de la création de
l’utilisateur :
 /etc/skel
 /etc/users
 /etc/passwd
 /etc/shadow

31 / 32
Exercices

La ligne correcte de la table cron qui permet d’exécuter le


script /usr/local/sbin/chklog une fois par heure entre
trois heures et cinq heures de l’après-midi chaque lundi et
jeudi est :
 0 3,4,5 * * 2,5 /usr/local/sbin/chklog
 0 3,4,5 * * 1,4 /usr/local/sbin/chklog
 * 15-17 * * 1,4 /usr/local/sbin/chklog
 0 15-17 * * 1,4 /usr/local/sbin/chklog
L’utilisateur nicolas de votre serveur a oublié son mot de
passe. Quelle commande allez-vous utiliser pour changer
son mot de passe en supposant que vous vous êtes
connecté en tant que root ?

32 / 32

Vous aimerez peut-être aussi