Unix에서는 프로세스 사용자를 변경하는 세 가지 방법이 있습니다.

Unix에서는 프로세스 사용자를 변경하는 세 가지 방법이 있습니다.

~에 따르면https://unix.stackexchange.com/a/489913/674

cron 작업은 사용자가 로그인하지 않고도 모든 사용자로 실행할 수 있습니다.

다행히도 init 프로세스를 시작하기 위해 루트에 로그인할 필요는 없습니다(수천 대의 서버와 수백만 대의 가상 머신 대기열을 처리한다고 상상해 보세요).

나를 소유자로 두고 로그인하지 않고 프로세스를 실행하려면 두 곳에서 어떻게 해야 합니까?시스템/라이브러리 호출레벨과 유틸리티 레벨?

root하고 싶다면 어떻게 해야 할까요 ?

어쩌다로그인할 수 없는 서비스 사용자프로세스 소유자로 프로세스를 시작하시겠습니까, 아니면 나중에 프로세스 소유자가 되시겠습니까?

유일한 방법은 프로그램에서 프로세스를 호출 setuid()하거나 실행하는 것입니까?seteuid()

감사해요.

답변1

Unix에서는 프로세스 사용자를 변경하는 세 가지 방법이 있습니다.

프로세스 사용자를 변경하는 2가지 시스템 수준 방법

  • 프로세스에 루트가 전통적으로 가지고 있는 CAP_SETUID 기능(및 기타 모든 기능)이 있는 경우 시스템 호출을 사용하여 다른 setuid사용자 로 변경할 수 있습니다 . 다른 사용자는 uid를 뒤섞을 수 있습니다. 프로세스에는 3개의 uid가 있으며 마음대로 이동할 수 있습니다. 하나만 남을 때까지 uid를 교환하거나 삭제할 수 있습니다. CAP_SETUID 기능이 없으면 추가할 수 없습니다 . 일반적으로 프로세스는 권한을 해제하거나 이동하기 위해 이러한 시스템 호출만 사용할 수 있습니다. 이러한 호출을 통해 프로그램을 계속할 수 있습니다.setreuidsetresuidsetfsuiduids
  • exec실행 파일 suid: 실행 파일에 suid비트가 설정되어 있고 유효한 유형(스크립트가 아닌 java가 아닌...)인 경우 실행 시 유효 사용자 ID가 파일의 사용자 ID로 변경됩니다. 소유자. (이것은 비트가 있는 그룹에 대해서도 수행될 수 있습니다 sgid). 이것이 특권을 얻는 유일한 방법입니다. 현재 프로그램은 exec호출되면 종료되고 새 프로그램으로 대체되지만 프로세스는 동일하며 열린 파일(예: stdin, stdout, stderr)도 상속합니다.

fork정량아니요사용자를 변경합니다. 분기된 프로세스는 몇 가지 예외를 제외하면 상위 프로세스와 동일합니다(참고자료 참조 man fork). 특히 uid, gid 및 기능은 변경되지 않았습니다.

실용적인 방법

이러한 프로그램은 위에 설명된 2가지 체계적인 접근 방식을 사용합니다.

  • sudo또는 사용 su:
    • su다른 사용자에게는 비밀번호를 묻는 메시지가 표시됩니다.
    • sudo비밀번호를 묻는 메시지가 표시되지만 파일에 등록된 경우에만 유효합니다 sudoers.

sudo, 등은 su2 가지 시스템 메소드를 사용합니다. (그리고 새로운 프로세스가 생성됩니다. 다른 시스템 메소드에서는 새로운 프로세스가 생성되지 않습니다.)logincron

sudo,무엇을 합니까 su?

#↳ ll /usr/bin/sudo
-rwsr-xr-x 1 root root 155K Sep  9  2017 /usr/bin/sudo*

사용자가 볼 수 있듯이 sudo실행 파일은 루트가 소유하고 suid 비트가 설정되어 있습니다( s첫 번째 비트가 표시될 것으로 예상되는 위치 x).

실행 하면 sudo루트로 실행됩니다(무엇을 하고 있는지 모르면 시도하지 마세요). 그런 다음 보안 검사를 수행합니다. 그런 다음 set??uid원하는 사용자가 되는 데 사용되며 , 그런 다음 해당 프로그램 exec(포크일 수도 있음)이 원하는 프로그램이 됩니다.

로그인하지 않고 프로세스 실행

예정된 시작 서비스를 사용하십시오.

  • 예약 된 일들
  • 존재하다

네트워크 서버가 작업 실행을 위한 네트워크 요청에 응답할 수 있도록 네트워크 메시지를 보냅니다.

자동 로그인 사용: ssh다른 컴퓨터의 스크립트에서 프로세스를 시작하는 데 사용됩니다.

관련 정보