Je sais que je peux voir les fichiers ouverts d'un processus en utilisant lsof
à ce moment sur ma machine Linux. Cependant, un processus peut ouvrir, modifier et fermer un fichier si rapidement que je ne pourrai pas le voir lors de sa surveillance à l'aide d'un script shell standard (par exemple watch
), comme expliqué dans "Surveiller les fichiers de processus ouverts sous Linux (temps réel)" .
Je pense donc que je recherche un moyen simple d’auditer un processus et de voir ce qu’il a fait au fil du temps. Ce serait bien s'il était également possible de voir quelles connexions réseau il (essayait) d'établir et que l'audit commence avant que le processus ait le temps de s'exécuter sans que l'audit ne soit démarré.
Idéalement, j'aimerais faire ceci:
sh $ audit-lsof /path/to/executable
4530.848254 OPEN read /etc/myconfig
4530.848260 OPEN write /var/log/mylog.log
4540.345986 OPEN read /home/gert/.ssh/id_rsa <-- suspicious
4540.650345 OPEN socket TCP ::1:34895 -> 1.2.3.4:80 |
[...]
4541.023485 CLOSE /home/gert/.ssh/id_rsa <-- would have missed
4541.023485 CLOSE socket TCP ::1:34895 -> 1.2.3.4:80 | this when polling
Serait-il possible d'utiliser strace
et certains drapeaux pour ne pas voir tous les appels système?
la source
Réponses:
Le courir avec
serait probablement suffisant.
Vous devrez utiliser l'
-o
option pour placer la sortie de strace ailleurs que sur la console, si le processus peut imprimer sur stderr. Si votre processus se déroule, vous aurez également besoin de-f
ou-ff
.Oh, et vous voudrez peut-être
-t
aussi, ainsi vous pourrez voir quand les appels ont eu lieu.Notez que vous devrez peut-être peaufiner la liste des appels de fonction en fonction de ce que votre processus fait - je devais ajouter
getdents
par exemple, pour obtenir un meilleur échantillon en utilisantls
:la source
-o
pour pousser la sortie dans un fichier. Ensuite, vous pouvez exécutertail -F strace.output
dans un autre terminal pour obtenir une mise à jour "en direct".strace
à un processus en cours avec l'-p PID
option.-y
à "[p] chemins d'accès associés à des arguments de descripteur de fichier"