프로세스에 소유자가 있을 수 있나요? 무슨 뜻이에요?

프로세스에 소유자가 있을 수 있나요? 무슨 뜻이에요?

이 명령을 사용하여 프로세스의 소유자를 확인할 수 있습니다 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를 가진 사용자는 유사한 명령을 통해 소유자 또는 루트 권한으로 전환할 수 없거나 계층 구조의 프로세스와 관련된 경우 그 정도가 덜한 경우 프로세스를 종료/중지/재개할 수 없습니다 .

관련 정보