GNU/Linux >> Tutoriels Linux >  >> Linux

Est-il possible de "masquer" un processus de la liste de "ps" ou "top" sous Linux

Selon le correctif du noyau http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=0499680a42141d86417a8fbaa8c8db806bea1201, vous pouvez utiliser l'option hidepid pour le système de fichiers proc :

hidepid=0 (par défaut) signifie l'ancien comportement - n'importe qui peut lire les fichiers /proc/PID/* lisibles par tous.

hidepid=1 signifie que les utilisateurs ne peuvent accéder à aucun répertoire /proc//, mais au leur. Les fichiers sensibles tels que cmdline, sched*, status sont désormais protégés contre les autres utilisateurs. Comme la vérification des autorisations effectuée dans proc_pid_permission() et les autorisations des fichiers ne sont pas modifiées, les programmes qui attendent des modes de fichiers spécifiques ne sont pas confus.

hidepid=2 signifie que hidepid=1 plus tous les /proc/PID/ seront invisibles pour les autres utilisateurs. Cela ne signifie pas qu'il cache si un processus existe (il peut être appris par d'autres moyens, par exemple par kill -0 $PID), mais il cache l'euid et l'egid du processus. Cela complique la tâche de l'intrus de collecter des informations sur les processus en cours d'exécution, si un démon s'exécute avec des privilèges élevés, si un autre utilisateur exécute un programme sensible, si d'autres utilisateurs exécutent n'importe quel programme, etc.

gid=XXX définit un groupe qui pourra rassembler toutes les informations des processus (comme en mode hidepid=0). Ce groupe doit être utilisé au lieu de mettre l'utilisateur non root dans le fichier sudoers ou quelque chose. Cependant, les utilisateurs non fiables (likedaemons, etc.) qui ne sont pas censés surveiller les tâches dans l'ensemble du système ne doivent pas être ajoutés au groupe.

Vous n'êtes pas en mesure de contrôler la visibilité au niveau des processus, mais vous pouvez vous assurer que vos utilisateurs ne peuvent voir que leurs propres processus.

Si vous avez une version de noyau supérieure à 3.3, vous pouvez essayer avec la commande suivante :

 
mount /proc -o remount,hidepid=2


Eh bien, vous avez quelques options ici. La solution de facilité serait d'échanger les programmes ps et top avec des versions modifiées qui cachent ce que vous voulez cacher.

L'alternative serait d'exécuter votre code intégré dans un processus existant, ou d'écrire un wrapper-script autour de votre code avec un nom anodin.

Dans certaines versions de PS, vous pouvez le modifier en modifiant argv[], mais vous ne savez pas si cela fonctionne pour top, et vous ne savez pas si cela fonctionne sous Linux (c'est principalement une convention BSD).

Tout dépend exactement de ce que vous cherchez à réaliser en faisant cela ?


Linux
  1. Quelle est la source actuelle du noyau Linux ?

  2. Nom du processus à partir de son pid sous Linux

  3. Est-il possible d'installer la police Helvetica sur Linux ?

  4. Lecteur de flux RSS depuis le terminal sous Linux

  5. Comment démarrer des programmes Linux GUI à partir de la ligne de commande, mais séparément de la ligne de commande ?

Redimensionner une image depuis le terminal Linux

Programmer le matériel à partir de la ligne de commande Linux

Comment changer la priorité d'un processus sous Linux

Les effets de l'ajout d'utilisateurs à un système Linux

Comment envoyer des processus en arrière-plan sous Linux

Comment fonctionne copy_from_user du noyau Linux en interne ?