Может ли процесс иметь владельца? Что это значит?


9

Мы можем определить владельца процесса с помощью psкоманды. Означает ли это, что другие пользователи не могут запустить / убить / возобновить этот процесс?

Ответы:


18

Прочитайте учетные данные (7) , форк (2) , execve (2) . Система вилки вызова является способом создаются процессы (сегодня, forkчасто реализуются с клоном (2) , но вы можете видеть , что в качестве деталей реализации). Exec системного вызова путь исполняемые запускаются программы. Помните, что все делается из какого-то процесса с некоторыми системными вызовами (перечислены в syscalls (2) ). Самый первый процесс ( init или systemd ) был волшебным образом запущен ядром во время загрузки. Другие процессы были запущены fork (2), Современные ядра Linux иногда - но редко - магически запускают несколько специальных процессов (например /sbin/hotplug) или потоков ядра (например kworker, kswapd....).

Так что да, каждый процесс (и каждый файл) имеет своего владельца (технически uid , небольшое неотрицательное число) и группу (gid). 0 uid для root и имеет дополнительные разрешения.

Читайте также о setuidsetreuid (2) ...) Это сложно.

это означает, что другой владелец не может запустить этот процесс?

Процесс уже запущен (но он может быть бездействующим или ожидающим), поэтому никто не сможет запустить его снова. Не путайте процесс (что-то динамическое) с программой (исполняемый файл , часто в формате ELF ), работающей внутри него.

Данная программа (например /bin/bash) может быть выполнена в нескольких процессах. Многие исполняемые файлы остаются на вашем диске без каких-либо (в данный момент) процессов, выполняющих их.

В Linux proc (5) очень полезен для запроса ядра о состоянии процессов. Попробуйте для примеров cat /proc/$$/statusи cat /proc/self/maps. Смотрите также pgrep (1) , ps (1) , top (1) .

Каждый процесс имеет свое собственное виртуальное адресное пространство , свою собственную таблицу дескрипторов файлов , свой собственный рабочий каталог (и часто несколько потоков , см. Pthreads (7) ) и т. Д. И т. Д.

Означает ли это, что другие владельцы не могут запустить / убить / возобновить этот процесс?

Запуск процесса не имеет никакого смысла (он уже запущен). Однако, исполняемый файл процесса pid 1234 доступен как /proc/1234/exeсимволическая ссылка, и вы можете использовать это для execve (2) - но вы, вероятно, не должны -. Правила разрешения execveприменяются.

Чтобы убить (2) процесс, вы обычно должны иметь такой же uid. Однако в документации сказано:

  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. 

Чтобы остановить процесс, используйте сигнал SIGSTOP(или SIGTSTP), используемый с kill (2) . Смотрите сигнал (7) .

Чтобы возобновить остановленный процесс, используйте SIGCONTсигнал.


4

Обычно владельцем является пользователь, запустивший этот процесс. Команда может быть выполнена другими пользователями, но это будет другой процесс.

это означает, что другой владелец не может запустить этот процесс?

Нет другого владельца. Не путайте программы (исполняемые файлы) и процессы (запущенные программы).

Означает ли это, что другие владельцы не могут запустить / убить / возобновить этот процесс?

Единственный владелец уже запустил процесс. Если вы имеете в виду других пользователей , а не владельцев, это зависит.

Root, то есть пользователь с uidравным 0, имеет полную мощность. Другие пользователи, использующие то же самое uid, с точки зрения операционной системы, являются одним и тем же пользователем, поэтому также имеют полную мощность для этого процесса.

Пользователи с другим uid не смогут завершить / остановить / возобновить процесс, если только им не разрешено переключаться на владельца или привилегию root с помощью sudoили аналогичной команды или, в меньшей степени, если они связаны с этим процессом из их иерархии.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.