GNU/Linux >> Tutoriales Linux >  >> Linux

¿Puede un proceso tener un propietario? ¿Qué significa?

Leer credenciales (7), bifurcación (2), execve (2). La llamada al sistema de bifurcación es la forma en que se crean los procesos (hoy, fork a menudo se implementa con clone (2), pero puede verlo como un detalle de implementación). La llamada al sistema exec es la forma en que se inician los programas ejecutables. Recuerde que todo se hace desde algún proceso con algunas llamadas al sistema (enumeradas en syscalls(2)). El kernel inició mágicamente el primer proceso (init o systemd) en el momento del arranque. Fork(2) ha iniciado otros procesos. Los núcleos de Linux modernos a veces, pero rara vez, inician mágicamente algunos procesos especiales (por ejemplo, /sbin/hotplug ) o subprocesos del kernel (por ejemplo, kworker , kswapd ....).

Entonces, sí, cada proceso (y cada archivo) tiene un propietario (técnicamente, el uid, un pequeño número no negativo) y un grupo (el gid). El uid 0 es para root y tiene permisos adicionales.

Lea también sobre setuid (y setreuid(2)...) Es complicado.

¿Significa que el otro propietario no puede ejecutar ese proceso?

Un proceso ya ejecutándose (pero podría estar inactivo o en espera), por lo que nadie puede volver a ejecutarlo. No confunda un proceso (algo dinámico) con el programa (un archivo ejecutable, a menudo en formato ELF) que se ejecuta dentro de él.

Un programa dado (por ejemplo, /bin/bash ) se puede ejecutar en varios procesos. Muchos ejecutables permanecen en su disco sin tener (en un instante dado) ningún proceso ejecutándolos.

En Linux, proc(5) es muy útil para consultar el kernel sobre el estado de los procesos. Pruebe con ejemplos cat /proc/$$/status y cat /proc/self/maps . Véase también pgrep(1), ps(1), top(1).

Cada proceso tiene su propio espacio de direcciones virtuales, su propia tabla de descriptores de archivo, su propio directorio de trabajo (y, a menudo, varios subprocesos, consulte pthreads(7)), etc., etc...

¿Significa que otros propietarios no pueden ejecutar/matar/reanudar ese proceso?

Ejecutar un proceso no tiene ningún sentido (ya correr). Sin embargo, el ejecutable del proceso de pid 1234 está disponible como /proc/1234/exe enlace simbólico, y puede usarlo para execve (2), pero probablemente no debería hacerlo. Las reglas de permiso para execve aplica.

Para matar (2) un proceso, generalmente debe tener el mismo uid. Sin embargo, la documentación dice:

  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. 

Para detener un proceso, use el SIGSTOP (o SIGTSTP ) señal utilizada con kill(2). Ver señal(7).

Para reanudar un proceso detenido, use el SIGCONT señal.


El propietario suele ser el usuario que inició ese proceso. El comando puede ser ejecutable por otros usuarios, pero ese sería un proceso diferente.

¿Significa que el otro propietario no puede ejecutar ese proceso?

No hay otro dueño. No confunda programas (archivos ejecutables) y procesos (programas en ejecución).

¿Significa que otros propietarios no pueden ejecutar/matar/reanudar ese proceso?

El único dueño ya inició el trámite. Si te refieres a otros usuarios , no propietarios, eso depende.

Root, es decir, un usuario con uid igual a 0, tiene plena potencia. Otros usuarios que comparten el mismo uid son, desde el punto de vista del sistema operativo, el mismo usuario, por lo que también tienen pleno poder en el proceso.

Los usuarios con un uid diferente no podrán eliminar/detener/reanudar el proceso, a menos que se les permita cambiar al privilegio de propietario o raíz a través de sudo o comando similar o, en menor medida, si están relacionados con ese proceso desde su jerarquía.


Linux
  1. ¿Qué significa "rm is hash"?

  2. ¿Cuál es el propósito de cada uno de los diferentes UID que puede tener un proceso?

  3. ¿Qué significa &al final de un comando de Linux?

  4. ¿Qué hacer cuando Ctrl + C no puede matar un proceso?

  5. ¿Qué significa matar -3?

¿Qué significa chmod 777?

¿Qué significa "-" (doble guión)?

¿Qué significa ser "sh compatible"?

¿Qué indica esta estadística de proceso?

No hay variable X11 DISPLAY - ¿qué significa?

¿Qué significa la capacidad ep?