Podemos determinar o proprietário de um processo usando o ps
comando Isso significa que outros usuários não podem executar / matar / retomar esse processo?
Leia credenciais (7) , fork (2) , execve (2) . A chamada do sistema fork é a maneira como os processos são criados (hoje, fork
geralmente é implementado com o clone (2), mas você pode ver isso como um detalhe da implementação). A chamada do sistema exec é a maneira como os programas executáveis são iniciados. Lembre-se de que tudo é feito a partir de algum processo com algumas chamadas do sistema (listadas em syscalls (2) ). O primeiro processo ( init ou systemd ) foi iniciado magicamente pelo kernel no momento da inicialização. Outros processos foram iniciados pelo fork (2). Os kernels modernos do Linux às vezes - mas raramente - iniciam magicamente alguns processos especiais (por exemplo /sbin/hotplug
) ou threads do kernel (por exemplo kworker
, kswapd
....).
Então, sim, todo processo (e todo arquivo) tem algum proprietário (tecnicamente o uid , um pequeno número não negativo) e um grupo (o gid). O uid 0 é para root e tem permissões extras.
Leia também sobre setuid (e setreuid (2) ...) É complicado.
significa que o outro proprietário não pode executar esse processo?
Um processo já está em execução (mas pode estar ocioso ou em espera), para que ninguém possa executá-lo novamente. Não confunda um processo (algo dinâmico) com o programa (um arquivo executável , geralmente no formato ELF ) em execução nele.
Um determinado programa (por exemplo /bin/bash
) pode ser executado em vários processos. Muitos executáveis permanecem no seu disco sem ter (em um determinado instante) nenhum processo executando-os.
No Linux, proc (5) é muito útil para consultar o kernel sobre o estado dos processos. Tente exemplos cat /proc/$$/status
e cat /proc/self/maps
. Veja também pgrep (1) , ps (1) , parte superior (1) .
Cada processo tem seu próprio espaço de endereço virtual , sua própria tabela de descritores de arquivos , seu próprio diretório de trabalho ((e muitas vezes vários threads , consulte pthreads (7) ) etc etc ...
significa que outros proprietários não podem executar / matar / retomar esse processo?
A execução de um processo não faz nenhum sentido (ele já está em execução). No entanto, o executável do processo do pid 1234 está disponível como o /proc/1234/exe
link simbólico, e você pode usá-lo para execve (2) - mas provavelmente não deveria -. As regras de permissão para execve
se aplicam.
Para matar (2) um processo, você geralmente deve ter o mesmo uid. No entanto, a documentação diz:
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 parar um processo, use o sinal SIGSTOP
(ou SIGTSTP
) usado com kill (2) . Veja o sinal (7) .
Para retomar um processo parado, use o SIGCONT
sinal.
O proprietário geralmente é o usuário que iniciou esse processo. O comando pode ser executável por outros usuários, mas isso seria um processo diferente.
significa que o outro proprietário não pode executar esse processo?
Não há outro proprietário. Não confunda programas (arquivos executáveis) e processos (executando programas).
Isso significa que outros proprietários não podem executar / matar / retomar esse processo?
O único proprietário já iniciou o processo. Se você quer dizer outros usuários , não proprietários, isso depende.
Raiz, ou seja, um usuário uid
igual a 0, tem poder total. Outros usuários que compartilham o mesmo uid
são, do ponto de vista do SO, o mesmo usuário, portanto, também têm todo o poder no processo.
Os usuários com um uid diferente não poderão interromper / interromper / retomar o processo, a menos que tenham permissão para mudar para o proprietário ou privilégio de root por meio de sudo
um comando semelhante ou, em menor grau, se estiverem relacionados a esse processo da hierarquia deles.