GNU/Linux >> Tutoriels Linux >  >> Linux

Un processus peut-il avoir un propriétaire ? Qu'est-ce que ça veut dire?

Lire les informations d'identification (7), fork (2), execve (2). L'appel système fork est la façon dont les processus sont créés (aujourd'hui, fork est souvent implémenté avec clone(2) mais vous pouvez voir cela comme un détail d'implémentation). L'appel système exec est la façon dont les programmes exécutables sont lancés. Rappelez-vous que tout est fait à partir d'un processus avec des appels système (listés dans syscalls(2)). Le tout premier processus (init ou systemd) a été démarré comme par magie par le noyau au démarrage. D'autres processus ont été lancés par fork(2). Les noyaux Linux modernes lancent parfois - mais rarement - comme par magie quelques processus spéciaux (par exemple, /sbin/hotplug ) ou les threads du noyau (par exemple kworker , kswapd ....).

Alors oui, chaque processus (et chaque fichier) a un propriétaire (techniquement l'uid, un petit nombre non négatif) et un groupe (le gid). L'uid 0 est pour root et a des permissions supplémentaires.

Lisez aussi à propos de setuid (et setreuid(2)...) C'est délicat.

cela signifie-t-il que l'autre propriétaire ne peut pas exécuter ce processus ?

Un processus est déjà en cours d'exécution (mais il peut être inactif ou en attente), afin que personne ne puisse l'exécuter à nouveau. Ne confondez pas un processus (quelque chose de dynamique) avec le programme (un fichier exécutable, souvent au format ELF) exécuté à l'intérieur.

Un programme donné (ex. /bin/bash ) peut être exécuté en plusieurs processus. De nombreux exécutables restent sur votre disque sans qu'aucun processus ne les exécute (à un instant donné).

Sous Linux, proc(5) est très utile pour interroger le noyau sur l'état des processus. Essayez pour des exemples cat /proc/$$/status et cat /proc/self/maps . Voir aussi pgrep(1), ps(1), top(1).

Chaque processus a son propre espace d'adressage virtuel, sa propre table de descripteurs de fichiers, son propre répertoire de travail, (et souvent plusieurs threads, voir pthreads(7)) etc etc...

cela signifie-t-il que les autres propriétaires ne peuvent pas exécuter/arrêter/reprendre ce processus ?

Exécuter un processus n'a aucun sens (c'est déjà fonctionnement). Cependant, l'exécutable du processus de pid 1234 est disponible en tant que /proc/1234/exe lien symbolique, et vous pouvez l'utiliser pour execve(2) - mais vous ne devriez probablement pas -. Les règles d'autorisation pour execve s'applique.

Pour kill(2) un processus, vous devez généralement avoir le même uid. Cependant, la documentation indique :

  For a process to have permission to send a signal, it must either be
   privileged (under Linux: have the CAP_KILL capability in the user
   namespace of the target process), or the real or effective user ID of
   the sending process must equal the real or saved set-user-ID of the
   target process.  In the case of SIGCONT, it suffices when the sending
   and receiving processes belong to the same session. 

Pour arrêter un processus, utilisez le SIGSTOP (ou SIGTSTP ) signal utilisé avec kill(2). Voir signal(7).

Pour reprendre un processus arrêté, utilisez le SIGCONT signal.


Le propriétaire est généralement l'utilisateur qui a lancé ce processus. La commande peut être exécutable par d'autres utilisateurs, mais ce serait un processus différent.

cela signifie-t-il que l'autre propriétaire ne peut pas exécuter ce processus ?

Il n'y a pas d'autre propriétaire. Ne confondez pas programmes (fichiers exécutables) et processus (programmes en cours d'exécution).

Cela signifie-t-il que les autres propriétaires ne peuvent pas exécuter / tuer / reprendre ce processus ?

Le propriétaire unique a déjà lancé le processus. Si vous voulez dire d'autres utilisateurs , pas les propriétaires, ça dépend.

Root, c'est-à-dire un utilisateur avec uid égal à 0, a la pleine puissance. Autres utilisateurs partageant le même uid sont, du point de vue du système d'exploitation, le même utilisateur, donc ayez également plein pouvoir sur le processus.

Les utilisateurs avec un uid différent ne pourront pas tuer/arrêter/reprendre le processus, à moins qu'ils ne soient autorisés à passer au propriétaire ou au privilège root via sudo ou une commande similaire ou, dans une moindre mesure, s'ils sont liés à ce processus à partir de leur hiérarchie.


Linux
  1. Que signifie cet avertissement ?

  2. Que signifie &à la fin d'une commande Linux ?

  3. Qu'est-ce que cela signifie par #define X X ?

  4. Que signifie \b dans un modèle grep ?

  5. quels tueurs de processus Linux a-t-il?

Que signifie chmod 777

Qu'est-ce que cela signifie d'être "compatible sh" ?

Qu'est-ce que cette statistique de processus indique ?

Pas de variable DISPLAY X11 - qu'est-ce que cela signifie ?

Quelqu'un peut-il expliquer en détail ce que fait set -m ?

Que signifie la capacité ep ?