Maison >Tutoriel système >Linux >Conseils aux débutants pour apprendre les appels système Linux
Ces dernières années, j'ai effectué beaucoup de travaux liés aux conteneurs. Précédemment, j'ai vu une excellente conférence de Julien Friedman, qui a écrit un framework de conteneurs en quelques lignes de Go. J'ai soudain compris qu'un conteneur n'est qu'une machine au sein d'un processus Linux restreint.
La création de cette vue restreinte implique de nombreux appels dans le package d'appels système Golang. Au début, je n'utilisais que les appels superficiels, mais au bout d'un moment, j'ai voulu éplucher la couche suivante de l'oignon et voir quels étaient ces appels système et comment ils fonctionnaient. Je partagerai ce que j'ai appris lors de mon discours à OSCON.
Comme leur nom l'indique, les appels système sont des appels système qui permettent de demander l'entrée dans le noyau Linux depuis l'espace utilisateur. Le noyau effectue un certain travail pour vous, comme créer un processus, puis retourne dans l'espace utilisateur.
Il existe un mécanisme commun qui fait passer tous les appels système vers le noyau, qui est géré par la bibliothèque libc. Le code de l'espace utilisateur définit certains registres, notamment l'ID de l'appel système qu'il souhaite et tous les arguments qu'il doit transmettre à l'appel système. Cela déclenche un "piège" pour transférer le contrôle au noyau.
C'est ainsi que le code de l'espace utilisateur envoie des requêtes au noyau, et Linux dispose également d'un pseudo système de fichiers, qui permet au noyau de transmettre des informations à l'espace utilisateur, et son contenu ressemble à des répertoires et des fichiers ordinaires.
Le répertoire/proc est un bon exemple. Jetez un œil à l’intérieur et vous trouverez toutes sortes d’informations intéressantes sur les processus exécutés sur la machine. Dans certains cas, comme les groupes de contrôle (groupes de contrôle), l'espace utilisateur peut configurer les paramètres en écrivant dans des fichiers sous ces pseudo-systèmes de fichiers.
Ce qui est particulièrement intéressant lorsque vous travaillez avec des conteneurs, c'est que le /proc de l'hôte contient toutes les informations sur le processus conteneurisé. Cela inclut les variables d'environnement, qui sont également enregistrées dans le pseudo-système de fichiers /proc, ce qui signifie que votre hôte a accès à l'environnement de tous les conteneurs en cours d'exécution. Si vous transmettez des secrets tels que des informations d'identification ou des mots de passe de base de données dans le conteneur via des variables d'environnement, cela peut avoir des conséquences en matière de sécurité.
De nombreux programmeurs qui écrivent des programmes réguliers peuvent ne pas avoir l'impression d'utiliser très souvent les appels système. Mais en fait, ils sont appelés fréquemment, car les activités quotidiennes telles que la création de fichiers ou la modification de répertoires impliquent des appels système Linux.
Vous n'avez pas besoin d'être un programmeur système pour profiter des appels système !
À propos de l'auteur :
Liz Rice - Liz Rice est évangéliste technique et experte en sécurité des conteneurs chez Aqua Security. Auparavant, elle a cofondé Microscaling Systems et développé son moteur de mise à l'échelle en temps réel, ainsi que le populaire site Web de métadonnées d'images MicroBadger.com. Elle possède une vaste expérience dans le développement, la gestion d'équipe et de produits de logiciels allant des protocoles réseau et des systèmes distribués, ainsi que dans les domaines de la technologie numérique tels que la VOD, la musique et la VoIP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!