Je travaille sur deux solutions pour mon équipe qui a besoin d'utiliser GIMP sur Ubuntu. Dans votre cas, GIMP sera remplacé par un ensemble d'outils de développement.
(Note: Dans votre cas, si vous souhaitez préserver le contenu d'un disque RAM, vous devrez utiliser les suggestions de Fabby et Zeiss, et vous n'aurez plus besoin de monter /tmp
et /var/tmp
décrits ci-dessous en tant que disque RAM)
Les défis que j'aborde sont :
- Ne laisser aucune trace de fichiers traités par l'une des applications. (Dans mon cas, je désactive également le swap pour la même raison). Certains outils de développement peuvent nécessiter une grande mémoire, vous devrez donc vraiment considérer la quantité de RAM dont vous aurez réellement besoin.
- Certains programmes peuvent utiliser
/var/tmp
et /tmp
en plus d'un répertoire personnel. Aucune trace ne doit être laissée sous aucun de ces fichiers sans désactiver explicitement le bit sticky sur ces répertoires (autrement certains programmes pourraient ne plus fonctionner)
- Le système doit toujours fournir une image propre d'un répertoire personnel -- donc même les changements de configuration ne sont pas conservés.
- L'utilisateur régulier ne doit pas avoir de privilèges
sudo
.
- Doit fonctionner pour tous les programmes GUI pris en charge par toutes les distributions sans aucune manipulation (sinon j'aurais simplement utilisé des images Docker). La solution doit également être implémentable sur n'importe quelle distribution Linux sans manipulations spéciales. Elle doit être installée et gérée par un administrateur système de niveau 1.
- L'utilisateur administrateur doit avoir un moyen de mettre à jour le système selon les besoins.
Solution 1: Conforme à la suggestion de Fabby sous la Possibilité 2 (Basse complexité)
-
Créez deux comptes : le premier est le compte par défaut créé au moment de l'installation de la distribution (Sur Ubuntu, généralement ce compte a des privilèges sudo
). Disons que le compte par défaut est admin
avec un répertoire personnel /home/admin
, tandis que le 2ème compte est dit developer
, avec un répertoire personnel défini en /ramdisk
. Lors de la création du 2ème compte, assurez-vous qu'il ne crée pas de répertoire personnel. Le compte developer
ne doit pas avoir de privilèges sudo
. Le mot de passe du compte root
doit être verrouillé, pour éviter la tentation d'utiliser su
tout en travaillant sous le compte developer
. Si vous êtes extrêmement paranoïaque, vous souhaiterez peut-être utiliser chroot
pour developer
et ne pas conserver de programmes set-uid dans le répertoire chrooté.
-
Testez tout (par exemple configurez .gitconfig
, gitignore
, .bashrc
et quelques autres fichiers de configuration) jusqu'à ce que tout fonctionne correctement. Assurez-vous que TMPDIR=/ramdisk/tmp
est défini dans .bashrc
pour que même les répertoires temporaires puissent être créés sur le grand disque RAM par les programmes qui respectent TMPDIR
.
Une fois testé, désactivez la fonction de mise à jour automatique selon les instructions applicables à votre distribution. C'est un must car je recommande également de monter /tmp
et /var/tmp
sur un disque RAM de la plus petite taille possible (voir 5 ci-dessous), et vos programmes de mise à jour automatique pourraient corrompre votre système.
-
Copiez /home/admin
dans un répertoire séparé, par exemple sous /var/warehouse/devtools-home
. Nettoyez tout ce qui n'est pas explicitement requis en tant qu'image non altérée de /var/warehouse/devtools-home
, pour le maintenir aussi petit que possible. Créez une archive ZIP de /var/warehouse/devtools-home
-- une image de répertoire personnel.
-
Ajoutez une entrée dans /etc/fstab
pour un disque RAM (tmpfs
) de taille requise, monté sur /ramdisk
, avec les options de montage comme uid=developer,gid=developer,mode=700,default,noatime,nodev,nosuid,noexec
.
-
Mettez à jour /etc/fstab
pour monter /tmp
et /var/tmp
en tant que tmpfs
si votre distribution n'utilise pas de disque RAM pour ces répertoires. (J'essaie de le maintenir aussi petit que possible).
-
Ajoutez une tâche cron avec @reboot
pour décompresser l'image du répertoire personnel du développeur sous /ramdisk
et chown -R developer.developer /ramdisk
. Vous pouvez utiliser des services de démarrage ou l'équivalent de rc.local
pris en charge par votre distribution.
-
Redémarrez et testez tout. Connectez-vous en tant que developer
pour le travail régulier. Redémarrez la machine, et toutes les traces sont perdues, et une fois de plus, vous obtenez une copie fraîche du répertoire personnel avec sa configuration par défaut.
-
Lorsque vous devez effectuer des mises à niveau ou ajouter de nouveaux outils, connectez-vous en tant que admin
, démontez /tmp
et /var/tmp
, effectuez les mises à niveau, puis redémarrez le serveur. Si vous souhaitez changer les paramètres par défaut du répertoire personnel, suivez les étapes (2) et (3) ci-dessus et créez une nouvelle image de répertoire personnel.
Solution 2: Serveur de démarrage PXE central (Complexité élevée par rapport à la solution ci-dessus)
(Je travaille actuellement sur cette solution donc toutes les étapes peuvent ne pas être dans l'ordre précis)
La Solution 1 est bonne pour une machine unique. Si vous souhaitez créer un environnement complet pour plusieurs postes de travail dans un LAN, celle-ci peut devenir trop lourde à gérer. Cependant, vous ne souhaitez pas perdre la puissance d'utilisation d'un CPU haut débit et de la mémoire RAM élevée des postes de travail modernes. Dans ce cas, un serveur de démarrage PXE central est recommandé plutôt qu'un serveur de terminaux central. Sans entrer dans trop de détails, voici ce dont vous avez besoin :
- Un serveur Linux central avec TFTP, DHCP, NFS, serveur central Syslog et services LDAP.
- Configurer le service LDAP avec les comptes / groupes requis.
- Configurer TFTP pour fournir un noyau Linux à un poste de travail et monter la partition racine en lecture seule via NFS qui aura une image de votre distribution plus les outils de développement requis. L'image montée via NFS doit également être configurée pour s'authentifier via LDAP. Vous devrez également avoir
/etc
monté comme une partition / répertoire distinct par appareil en raison de la possibilité d'une configuration d'affichage différente.
- Utilisez des postes de travail sans disque avec un CPU haute vitesse et une mémoire RAM élevée. Configurez le BIOS du poste de travail pour utiliser le démarrage PXE.
- Assurez-vous que le disque RAM de la configuration requise est créé sur le poste de travail et que le répertoire personnel est monté sur le disque RAM, et que l'image de répertoire personnel est copiée comme décrit dans la Solution 1. Syslog s'exécutant sur le poste de travail doit envoyer des syslogs à un serveur syslogs central.
- Testez tout.
- Lorsque vous souhaitez procéder à une mise à niveau, mettez à jour l'image basée sur NFS avec les outils de développement requis, mettez à jour cette image sur un serveur central, puis redémarrez les postes de travail. (Je préfère conserver la dernière et la version actuelle, afin qu'à tout moment, je puisse revenir à l'ancienne version si un problème est signalé dans les nouvelles mises à jour).