Comprendre les appels système de Linux avec la commande strace.

Lorsque les programmes fonctionnant sous Linux veulent utiliser les sources gérées par l’os (documents d’analyse, processus de production, etc), ils font des appels système à l’OS. Les appels système fonctionnent au niveau du noyau et effectuent les opérations nécessaires, laissant le contrôle au programme appelant. L’outil strace fournit la capacité de tracer ces contacts système Linux.

Utilisation typique de la commande strace

Pour suivre les demandes système d’une application, il suffit d’invoquer la commande avec strace dans le style suivant :

Cependant, il existe couramment des processus qui démarrent beaucoup plus tôt et qui continuent à travailler en arrière-plan. À la suite de tout type de problèmes, vous pouvez vouloir accumuler des détails supplémentaires liés à de telles procédures. Vous pouvez attacher strace à tout type d’application en cours d’exécution en offrant l’ID du processus à la spécification – p :

Sortie :

Suivre les threads et les bifurcations d’une application

Avec strace, vous pouvez inspecter tous les threads ainsi que diverses autres procédures enfants qui sont une bifurcation de l’application en utilisant le drapeau – f .

Sortie :

Vérifier certains appels système avec strace

Le résultat par défaut de strace peut être assez encombré à suivre parfois. Si vous avez seulement l’intention de suivre certains appels système, vous pouvez le faire avec le critère – e :

Pour suivre uniquement les appels système liés aux opérations de soumission, utilisez – e trace= documents :

Pour filtrer uniquement les appels système liés au réseau, définissez – e trace= réseau dans la commande :

Get Time Information in Seconds

Lors de la sortie des appels système, vous pouvez faire usage de la spécification – t pour obtenir des infos temporelles avec une précision en secs. La plupart du temps, cette précision ne suffira pas à vos besoins. Dans de tels scénarios, vous pouvez utiliser la spécification – tt pour obtenir des informations temporelles avec une précision en fraction de seconde :

Collecter des statistiques sur les appels système

Avec le paramètre – c , vous pouvez accumuler des données concernant les demandes du système aussi longtemps que vous le désirez :

Enregistrer les journaux dans un fichier

Si vous exécutez strace pendant une longue période et que vous avez également l’intention d’examiner la visite résultante plus en détail plus tard, vous aurez besoin d’enregistrer les journaux. Avec la spécification – o , vous pouvez spécifier les données dans lesquelles strace doit conserver les journaux :

ptrace Blocking Process

À l’aide de l’appel téléphonique système prctl, toute application sous Linux peut s’empêcher d’être régulée par des individus non root en utilisant ptrace. Si l’application efface le drapeau PR _ SET_DUMPABLE pour elle-même au moyen de prctl, les clients en dehors de root n’auront pas la capacité de réguler cette application avec ptrace, également s’ils méritent de signaler l’application.

Voir aussi :  La structure des répertoires de Linux, expliquée

L’une des utilisations les plus normales de cette fonctionnalité est observée dans le programme logiciel de représentant de vérification OpenSSH. Par conséquent, le contrôle de l’application par une autre application avec ptrace est empêché lors de l’authentification individuelle.

ptrace et aussi la sécurité

En raison du centre ptrace intégré dans le modèle de procédure standard de Linux, tout type de logiciel que vous exploitez sur votre système avec votre utilisateur a le pouvoir d’y placer du code destructeur. Du dispositif xterm le plus simple aux applications avancées de navigateur Internet, un tel logiciel malveillant peut prendre le contrôle de toutes vos diverses autres applications en cours d’exécution – grâce à l’appel du système ptrace – et copier des informations essentielles sans que vous vous en rendiez compte.

En réaction à ce scénario, que de nombreux individus ne connaissent pas, un dispositif de sécurité a été créé avec le composant de protection appelé Yama dans le bit Linux .

Vous pouvez contrôler la rétroaction à l’appel système ptrace via les données / proc/sys/kernel/ yama/ptrace _ scope . Par défaut, ces documents créent une valeur de 0.

Les valeurs suivantes sont acceptables :

ValeurSignification
Comportement conventionnel : Toutes les applications qui ont le droit de pister peuvent être inspectées.
1 Traçage restreint : Seuls les mamans droites et le papa de l’application ou les applications de débogage autorisées par l’application avec l’option PR _ SET_PTRACER ont le contrôle. Par conséquent, faire des utilisations de gdb nom_de_programme et aussi strace nom_de_programme continuera à fonctionner, pourtant vous n’aurez pas la capacité d’apposer une application en cours d’exécution plus tard.
2 Ptrace au gestionnaire du système : Seules les applications ayant défini CAP _ SYS_PTRACE maison ou les processus youngster qui définissent l’alternative PTRACE _ TRACEME avec prctl peuvent être contrôlées.
3 Complètement désactivé : Aucun PTRACE n’est activé dans tout type de scénarios. Si cette propriété résidentielle est définie quand, vous ne pouvez pas la transformer une fois de plus au moment de l’exécution.
Voir aussi :  KDE vs XFCE : comparaison des deux environnements de bureau Linux

De nombreux concepteurs ne savent pas que les applications peuvent désactiver elles-mêmes ptrace au moyen de prctl, à l’exception de l’utilisateur d’origine. Bien que le programme logiciel lié à la sécurité, comme le représentant d’OpenSSH, effectue ces procédures, il ne serait certainement pas juste d’attendre les mêmes actions de tous les logiciels travaillant sur le système.

Récemment, certaines circulations Linux ont effectivement commencé à fixer la valeur par défaut des données ptrace _ range , expliquées plus haut, à 1 . Ainsi, avec des opérations ptrace limitées, un environnement de travail plus sûr est offert dans tout le système.

Utilisation d’un exemple strace

Enregistrez l’application d’exemple listée ci-dessous avec le nom ministrace. c . Vous pouvez ensuite la compiler avec la commande complying with :

Code :

Après avoir assemblé l’application, vous pouvez exécuter n’importe quelle commande avec ministrace et vérifier le résultat :

Vous pouvez utiliser strace à de nombreuses fins

strace peut aider à localiser les parasites dans les programmes qui utilisent inutilement les sources du système. En outre, la caractéristique qu’un programme affiche tout en utilisant les sources du système d’exploitation peut de même être exposée avec strace.

Puisque strace écoute directement les appels système, il peut exposer la dynamique d’exécution malgré le fait que le code du programme exécuté soit ouvert/fermé. Il est possible d’obtenir une suggestion concernant la raison pour laquelle les programmes jettent une erreur lorsqu’ils sont lancés en faisant usage de strace.

Voir aussi :  Ubuntu Desktop vs Ubuntu Server : quelle est la différence ?

De même, strace vous aide à reconnaître pourquoi un programme se termine de manière inattendue. Par conséquent, être familier avec strace est extrêmement important dans la croissance du noyau Linux et aussi la gestion du système.

Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *