Set-UID et Set-GID bit
Substitution d'identité Autoriser l'utilisateur de prendre les droits du propriétaire du fichier pendant l’exécution. (cas de passwd) Cette autorisation (s) remplace l'autorisation x du propriétaire ou du groupe Pour des raisons de sécurité: surveiller les fichiers qui possèdent le droit (s) ( les recenser lors de l’installation)
Modification par chmod ci-dessous, abc représentent les droits traditionnels chmod 4abc fichier (le x du propriétaire remplacé par s) chmod 2abc fichier (le x du groupe remplacé par s) chmod 6abc fichier ( gpe et prop)
Exemple Bit « s » au niveau du groupe : #find /sbin/ /usr/ /bin -perm -2000 -exec ls -l {} \; Bit « s » au niveau de l'utilisateur : #find /sbin/ /usr/ /bin -perm -4000 -exec ls -l {} \; Bit « s » au niveau du groupe et de l'utilisateur #find /sbin/ /usr/ /bin -perm -6000 -exec ls -l {} \;
Le sticky bit Ce bit (t) remplace l'autorisation x de other et s'applique uniquement aux fichiers exécutables et aux répertoires. Dans le cas des fichiers, le sticky bit indique que le segment texte du fichier exécutable est conservé dans l'espace disque de swap une fois la commande exécutée un chargement en mémoire plus rapide lors d'une exécution ultérieure. Dans le cas des répertoires, le bit t permet seulement au propriétaire du répertoire, au propriétaire du fichier ou à root de supprimer et de renommer un fichier
Démarrage du système Linux Processus de Boot Démarrage du système Linux
Une fois l'ordinateur mis sous tension, le processeur lance l'exécution du BIOS (Basic Input Output System). le BIOS exécute le MBR (Master Boot Reccord) situé sur le premier secteur (512 octets) du support bootable choisi (disque, CD, clef USB, ...)
Ce secteur d'amorçage contient donc un petit programme boot loader et une table des partitions. Le programme ou "boot loader", se charge de désigner la partition active du média et lance le programme qui se trouve au début de la dite partition (dans le secteur de boot de cette partition), Le chargeur de n'importe quel système d'exploitation peut se trouver à cet endroit Sous LINUX, ce programme est en général LILO (Linux Loader).
Donc, après le chargement du MBR en mémoire, le BIOS lance l'exécution de celui-ci. Le MBR étant très petit (512 octets), cela ne suffit pas pour faire tenir le noyau de Linux (500 Ko mini), ni le chargeur lui-même (la deuxième partie de LILO fait environ 5 Ko). - Si le MBR est celui de LILO, il lance la deuxième partie de LILO, - sinon, il lance le MBR de LILO qui se trouve sur la partition active. Celui-ci lance à son tour la deuxième partie de LILO.
La deuxième partie de LILO affiche le prompt LILO et on sélectionne l'OS. Le choix correspondant doit être tapé au clavier; sinon au bout d'un délai d'expiration, c'est le choix par défaut qui sera sélectionné Lilo charge et lance le noyau de Linux et lui passe la main.
Lancement du système : boot -> init Une fois le noyau chargé en mémoire, il lance le premier processus système /sbin/init Le processus init effectue un contrôle des partitions puis procède au montage du système de fichier principal sous / en mode lecture uniquement
init lit le fichier /etc/inittab pour savoir : - quel est le fichier à exécuter pour continuer le chargement du système - quel est le runlevel (niveau d'exécution) par défault - comment lancer les services pour un runlevel donné -…. /sbin/init = le premier processus système dont la tâche essentielle consiste à lancer les scripts de démarrage du système dans /etc/inittab
processus init Exemple de fichier /etc/inittab: format des lignes id:runlevels:action:process
Afin de lancer un processus de login quand l'ordinateur démarre (ou change de niveau d'exécution) une commande getty doit être placée dans le fichier /etc/inittab. Getty permet de faire fonctionner (GET) un terminal (TTY). Chaque terminal a besoin de sa commande getty. Quand vous vous loggez vous êtes sur le tty1. Pour aller sur le tty2 appuyez sur Alt-F2. tty1, tty2, etc. Les tty sont des "terminaux virtuels" (qu'on appelle parfois des "consoles virtuelles"). Vous pouvez vous logger sur différents terminaux virtuels et ainsi avoir plusieurs sessions différentes tournant en même temps sur l'ordinateur
Le rôle du programme getty est d'afficher le contenu du fichier /etc/issue, puis le nom de la machine suivi de la chaîne « login ». Dès que le login a été entré, getty exécute la commande /bin/login et c'est cette commande qui continue alors le processus de connexion (par exemple en affichant le contenu du fichier /etc/motd, ...), puis lance un Shell pour l'utilisateur
processus init Exemples d'actions courantes pour le fichier inittab : respawn Le processus est redémarré à chaque fois qu'il se termine wait Le processus n'est démarré qu'une seul fois et init attend sa fin boot Le processus est exécuté pendant le démarrage du système initdefault indique le niveau d’exécution par défaut sysinit Le processus est exécuté pendant le démarrage du système. Il est exécuté avant les entrées boot ou bootwait ctrlaltdel Le processus est exécuté lorsque init reçoit le signal SIGINT. (appui simultané des touches CTRL+ALT+DEL)
services et démons Lancement du système : boot -> init -> modules/services Après le chargement du noyau, le script correspondant à sysinit dans le fichier inittab est chargé : /etc/rc.d/rc.sysinit Ce script d'initialisation est chargé de 2 tâches fondamentales - charger les modules dans le noyau (gestion des périphériques) - démarrer les services en exécutant les processus : démons
rc.sysinit est un script qui va terminer la configuration de base du système : - Activer l’horloge, - charger la configuration clavier adéquate, - activer la partition de swap, - configurer le nom de la machine, - configurer la variable d'environnement PATH, Ce script vérifie notamment que le système de fichier racine ne comporte pas d'erreur et le remonte en lecture-écriture. Et enfin active les modules nécessaires en appelant /etc/rc.d/rc.modules.
Module : partie du noyau mais qui n'est pas directement intégré à celui-ci. L'intérêt des modules est qu'ils sont chargés en mémoire quand le besoin s'en fait sentir et déchargé quand on en a plus besoin. Cela permet d'économiser de la mémoire
Lancement du système : boot -> init -> services Le mécanisme de démarrage des services est caractéristique d'une distribution ( : incompatibilités entre distributions) : - Mandriva, Debian, RedHat, ... mécanisme dérivé d' »Unix System V » - Slackware, FreeBSD, NetBSD, ... mécanisme dérivée d' « Unix BSD »
le répertoire /etc/init le répertoire /etc/init.d contient tous les scripts de gestion des services installés (1 service <-> 1 ou plusieurs démon(s)) les lignes « /etc/rc.d/rc x » du fichier /etc/inittab déterminent le lancement des scripts pour le runlevel x Le runlevel de l'action initdefault est lancé par la ligne correspondante
Les 7 niveaux (runlevels) : 0 : halte (Ne pas mettre initdefault égal à cette valeur) 1 : mode mono-utilisateur (principalement pour le dépannage) 2 : mode multi-utilisateurs avec gestion du réseau mais sans gestion NFS 3 : mode multi-utilisateurs complet 4 : pas utilisé sous LINUX 5 : mode graphique (X11) -> login graphique 6 : redémarrage (ne pas mettre initdefault égal à cet valeur)
[S|K]XX<nom_du_script> A chaque runlevel correspond un répertoire /etc/rc.d/rcX.d/ contenant des liens symboliques sur des services à démarrer présents dans /etc/rc.d/init.d/ Les liens sont formés selon la syntaxe : [S|K]XX<nom_du_script> - S lance le script avec l'argument start (démarrage du service) - K lance le script avec l'argument stop (arrêt du service) - XX est un rang qui fixe l'ordre dans lequel les scripts sont lancés
Pour ajouter des scripts ou toute autre commande que vous désirez lancer au démarrage de la machine, 2 méthodes: Ajouter les scripts correspondant dans /etc/rc.d/init.d et faire des lien symbolique à partir de /etc/rc.d/rcX.d Ecrire le script /etc/rc.d/rc.local qui sera lancer dans /etc/inittab. Dans ce script ajoutez des scripts ou toute autre commande que vous désirez lancer au démarrage de la machine.
Par exemple : Mon répertoire /etc/rc.d/rc3.d/ contient entre autres les liens suivants : S10network S55sshd S90crond Ce qui signifie qu'à l'entrée dans le runlevel 3, le service réseau (network) sera démarré avant le démon sshd qui lui-même précédera le démon crond.