이 명령을 사용하여 프로세스의 소유자를 확인할 수 있습니다 ps
. 이는 다른 사용자가 프로세스를 실행/종료/재개할 수 없다는 의미입니까?
답변1
읽다바우처(7),포크(2),실행(2). 이것포크 시스템 호출프로세스를 생성하는 방법입니다(요즘에는 fork
일반적으로 다음을 통해 달성됩니다).클론(2)그러나 구현 세부 사항으로 간주할 수 있습니다.) 이것시스템 호출 실행그게 다야실행 가능 파일프로그램이 시작됩니다. 기억하세요, 모든 것은 특정 프로세스를 통해 이루어집니다.시스템 호출(에 나열됨시스템 호출(2)). 첫 번째 프로세스(내부에또는체계)은 부팅 시 커널에 의해 마술처럼 시작되었습니다. 다른 프로세스가 시작되었습니다.포크(2). 최신 Linux 커널은 때때로(드물게) 일부 특수 프로세스(예: /sbin/hotplug
) 또는 커널 스레드(예 kworker
: kswapd
...)를 마술처럼 시작합니다.
그럼요, 매번프로세스(및 모든 파일)에는 일부 소유자가 있습니다(기술적으로UID, 음수가 아닌 작은 숫자) 및 그룹(gid)입니다. 0 uid는 루트이며 추가 권한이 있습니다.
다음 내용도 읽어보세요.설정값(그리고세스루이드(2)...) 이건 까다롭습니다.
이는 다른 소유자가 프로세스를 실행할 수 없다는 의미입니까?
프로세스는이미실행 중이므로(유휴 상태이거나 대기 중일 수 있음) 누구도 다시 실행할 수 없습니다. 프로세스(동적 항목)와 프로그램(실행 파일)을 혼동하지 마세요.문서, 종종매우 낮은 주파수형식)을 실행합니다.
특정 프로그램(예: /bin/bash
)은 다음에서 찾을 수 있습니다.일부프로세스. 많은 실행 파일은 해당 파일을 실행하는 프로세스 없이(특정 순간) 디스크에 남아 있습니다.
리눅스에서는,공정(5)프로세스 상태에 대한 정보를 커널에 쿼리하는 데 매우 유용합니다. 예 cat /proc/$$/status
를 들어보세요 cat /proc/self/maps
. 당신은 또한 볼 수 있습니다pgrep(1),참고(1),탑(1).
각 프로세스에는 고유한 프로세스가 있습니다.가상 주소 공간, 그것은파일 설명자시계, 소유작업 목록, (그리고 종종 여러실, 바라보다병렬 스레드(7))등등...
이는 다른 소유자가 프로세스를 실행/종료/재개할 수 없음을 의미합니까?
프로세스를 실행하는 데 아무런 의미가 없습니다.이미달리기). 그러나 pid 1234 프로세스의 실행 파일은 /proc/1234/exe
심볼릭 링크로 제공됩니다.실행(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
) 신호를 사용하는 프로세스죽이다(2). 바라보다신호(7).
도착하다다시 덮다프로세스를 중지하려면 이 SIGCONT
신호를 사용하십시오.
답변2
소유자는 일반적으로 프로세스를 시작한 사용자입니다. 다른 사용자가 명령을 실행할 수 있지만 프로세스는 다릅니다.
이는 다른 소유자가 프로세스를 실행할 수 없다는 의미입니까?
다른 주인은 없습니다. 프로그램(실행 파일)과 프로세스(실행 중인 프로그램)를 혼동하지 마세요.
이는 다른 소유자가 프로세스를 실행/종료/재개할 수 없음을 의미합니까?
단일 소유자가 이미 프로세스를 시작했습니다. 다른 것을 언급하는 경우사용자, 소유자보다는 다릅니다.
루트, 즉 0 에 해당하는 사용자는 uid
모든 권한을 갖습니다. 운영 체제의 관점에서 보면 동일한 콘텐츠를 공유하는 다른 사용자 uid
는 동일한 사용자이므로 프로세스에 대한 모든 권한을 갖습니다.
sudo
다른 uid를 가진 사용자는 유사한 명령을 통해 소유자 또는 루트 권한으로 전환할 수 없거나 계층 구조의 프로세스와 관련된 경우 그 정도가 덜한 경우 프로세스를 종료/중지/재개할 수 없습니다 .