Możemy określić właściciela procesu za pomocą ps
polecenia. Czy to oznacza, że inni użytkownicy nie mogą uruchomić / zabić / wznowić tego procesu?
Możemy określić właściciela procesu za pomocą ps
polecenia. Czy to oznacza, że inni użytkownicy nie mogą uruchomić / zabić / wznowić tego procesu?
Odpowiedzi:
Czytaj referencje (7) , fork (2) , execve (2) . Wywołanie systemowe widelec jest sposób procesy są tworzone (dziś fork
jest często realizowane z klonu (2), ale widać, że jako szczegółach implementacji). Exec wywołania systemowego jest droga wykonywalne programy są uruchamiane. Pamiętaj, że wszystko odbywa się na podstawie niektórych procesów za pomocą niektórych wywołań systemowych (wymienionych w syscalls (2) ). Pierwszy proces ( init lub systemd ) został magicznie uruchomiony przez jądro w czasie uruchamiania systemu. Inne procesy zostały uruchomione przez fork (2). Nowoczesne jądra Linux czasami - ale rzadko - start magicznie kilka procesów specjalnych (np /sbin/hotplug
) lub wątki jądra (np kworker
, kswapd
....).
Tak więc, każdy proces (i każdy plik) ma jakiegoś właściciela (technicznie UID , małą liczbę nieujemną) i grupę (GID). Uid 0 jest dla roota i ma dodatkowe uprawnienia.
Przeczytaj także o setuid (i setreuid (2) ...) To trudne.
czy to oznacza, że drugi właściciel nie może uruchomić tego procesu?
Proces już działa (ale może być bezczynny lub czeka), więc nikt nie będzie mógł go uruchomić ponownie. Nie myl procesu (czegoś dynamicznego) z działającym w nim programem ( plikiem wykonywalnym , często w formacie ELF ).
Dany program (np. /bin/bash
) Można wykonać w kilku procesach. Wiele plików wykonywalnych pozostaje na dysku bez (w danym momencie) jakichkolwiek procesów je uruchamiających.
W Linuksie proc (5) jest bardzo przydatny do zapytania jądra o stan procesów. Spróbuj przykładów cat /proc/$$/status
i cat /proc/self/maps
. Zobacz także pgrep (1) , ps (1) , top (1) .
Każdy proces ma własną wirtualną przestrzeń adresową , własną tabelę deskryptorów plików , własny katalog roboczy (i często kilka wątków , patrz pthreads (7) ) itp. Itd.
czy to oznacza, że inni właściciele nie mogą uruchomić / zabić / wznowić tego procesu?
Uruchomienie procesu nie ma sensu ( już działa). Jednak plik wykonywalny procesu pid 1234 jest dostępny jako /proc/1234/exe
dowiązanie symboliczne i możesz go użyć do execve (2) - ale prawdopodobnie nie powinieneś -. Obowiązują zasady dotyczące uprawnień execve
.
Aby zabić (2) proces, zazwyczaj powinieneś mieć ten sam identyfikator użytkownika. Jednak dokumentacja mówi:
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.
Aby zatrzymać proces, użyj sygnału SIGSTOP
(lub SIGTSTP
) używanego z funkcją kill (2) . Zobacz sygnał (7) .
Aby wznowić zatrzymany proces, użyj SIGCONT
sygnału.
Właściciel jest zwykle użytkownikiem, który uruchomił ten proces. Polecenie może być wykonywane przez innych użytkowników, ale byłby to inny proces.
czy to oznacza, że drugi właściciel nie może uruchomić tego procesu?
Nie ma innego właściciela. Nie należy mylić programów (plików wykonywalnych) i procesów (uruchomionych programów).
Czy to oznacza, że inni właściciele nie mogą uruchomić / zabić / wznowić tego procesu?
Pojedynczy właściciel już rozpoczął proces. Jeśli masz na myśli innych użytkowników , a nie właścicieli, to zależy.
Root, czyli użytkownik o wartości uid
0, ma pełną moc. Inni użytkownicy, którzy dzielą to samo, uid
są z punktu widzenia systemu operacyjnego tym samym użytkownikiem, więc też mają pełną moc w tym procesie.
Użytkownicy z innym identyfikatorem użytkownika nie będą w stanie zabić / zatrzymać / wznowić procesu, chyba że będą mogli przełączyć się na uprawnienie właściciela lub roota za pomocą sudo
lub podobnej komendy lub, w mniejszym stopniu, jeśli są związani z tym procesem z ich hierarchii.