~ read.

Qu'est-ce que /dev/shm/ sous Linux et quand est-il utilisé ?

/dev/shm/ est un emplacement mémoire monté de la même manière qu'un disque dur, cependant aucune donnée ne sera enregistrée sur le disque, tout sera placé directement en mémoire vive. On peux le considérer comme étant l'inverse du SWAP qui lui est utilisé comme de la RAM mais stocke les données sur le disque.

Il est notamment utilisé comme mémoire partagée car c'est un moyen efficace de transmettre des données entre plusieurs programmes. Un programme pourra y placer des données qui pourront être utilisées par d'autres processus autorisés.

/dev/shm/ est également très utile pour accélérer la transmission de données sous Linux, donc accélérer la vitesse de fonctionnement des divers programmes qui l'utilisent.

On l'utilisera par exemple dans des systèmes de cache (pour autant que le cache ne prenne pas toute la RAM disponible).

Il faut cependant l'utiliser avec précaution car il peux causer divers problèmes ou dysfonctionnements. Comme évoqué ci-dessus il ne faut pas non plus y stocker trop de données sous peine de saturer la mémoire RAM.

Sécurisation de /dev/shm/

Comme /tmp, /dev/shm/ peut être une porte ouverte aux rootkits. Il est donc important de le sécuriser.

Nous allons sécuriser /dev/shm/ en y empêchant l'exécution de scripts (noexec) mais nous allons également y empêcher les setuid (Set User ID ou suid) et les setgid (Set Group ID) qui sont deux propriétés appliquées à des fichiers ou répertoires et qui permettent aux utilisateurs de les exécuter avec les droits d'un autre (au hasard : root :)).

Pour le sécuriser, nous allons modifier le point de montage de la partition. Ouvrez donc le fichier /etc/fstab :

nano /etc/fstab

Il vous suffit ensuite de modifier (ou d'ajouter si elle n'y est pas déjà) la ligne correspondant à /dev/shm.
Ce qui est important d'ajouter à cette ligne, c'est les paramètres noexec, nosuid et nodev après le paramètre defaults :

tmpfs /dev/shm tmpfs defaults,noexec,nosuid,nodev 0 0

Vous pouvez ensuite enregistrer (Ctrl + O) et fermer (Ctrl + X) le fichier.

Pour appliquer les modifications il vous suffit de redémarrer votre système ou de remonter la partition :

mount /dev/shm

Pour être sûr qu'il n'est plus possible d'exécuter de scripts dans /dev/shm vous pouvez en créer un (un simple hello world par exemple), le rendre exécutable (chmod) et tenter de le lancer. Si la partition est bien configurée vous devriez obtenir le message d'erreur "Permission non accordée" ou "Access denied".