Présentation
ProcInSh (Process in the Shell) est un inspecteur de processus fonctionnant dans un navigateur web et destiné aux systèmes Linux x86‑64. Le projet, publié sous licence MIT, expose l’arborescence des processus, leurs espaces mémoire et leurs variables d’environnement via une interface graphique accessible à l’adresse http://127.0.0.1:9090. Son nom fait référence à la série « Ghost in the Shell », soulignant la capacité à « flâner » dans l’espace des processus comme un fantôme.
Installation et exigences
L’application repose sur une pile de compilation native : Rust (gestionné par rustup), un compilateur C, clang avec le backend BPF, bpftool, pkg-config, les bibliothèques de développement libelf et zlib, ainsi que le fichier BTF du noyau disponible sous /sys/kernel/btf/vmlinux. Toutes ces dépendances sont installées via apt‑get sur Ubuntu :
sudo apt-get install --yes --no-install-recommends \
build-essential clang llvm pkg-config libelf-dev zlib1g-dev python3 \
linux-tools-common linux-tools-genericAprès avoir satisfait ces prérequis, deux voies d’installation sont proposées. La plus simple consiste à récupérer le binaire précompilé depuis crates.io :
cargo install procinsh --lockedou à compiler le projet depuis les sources :
git clone https://github.com/akawashiro/procinsh.git
cd procinsh
npm ci && npm run build:web
cargo build --release --lockedLe build nécessite Node.js ≥ 22 pour la partie frontale, comme indiqué dans le fichier package.json. La version du toolchain Rust est fixée dans rust-toolchain.toml, garantissant la reproductibilité des builds.
Fonctionnement et sécurité
Une fois le binaire disponible, le serveur s’exécute avec les capacités Linux suivantes : cap_sys_ptrace, cap_bpf, cap_perfmon et cap_dac_read_search. Ces droits sont octroyés soit via sudo, soit via setcap :
sudo setcap cap_sys_ptrace,cap_bpf,cap_perfmon,cap_dac_read_search=ep \
"$HOME/.cargo/bin/procinsh"L’option --allow-non-loopback autorise les connexions depuis d’autres hôtes, mais expose directement la mémoire et les variables d’environnement des processus sans aucune authentification, ce qui constitue un risque de divulgation de données sensibles. L’auteur recommande donc de limiter l’accès à l’interface locale ou d’envelopper le service derrière un reverse‑proxy avec authentification.
Limites et recommandations
Le support de WSL2 est décrit comme « très limité ». La cause principale réside dans le wrapper bpftool fourni par Ubuntu, qui ne trouve pas l’exécutable adéquat lorsque le noyau WSL2 diffère de la version des outils. La solution consiste à forcer la variable d’environnement BPFTOOL vers le binaire réel, par exemple :
for tool in /usr/lib/linux-tools/*/bpftool; do
if [ -x "$tool" ]; then export BPFTOOL="$tool"; break; fi
doneEnfin, le projet n’a pas été testé dans des conteneurs Docker, ce qui limite son déploiement automatisé dans des pipelines CI/CD. Les utilisateurs souhaitant intégrer ProcInSh dans des environnements containerisés devront donc valider manuellement la compatibilité du noyau et des capacités requises.