비활성화된 계정이 프로세스를 실행하지 못하도록 방지

비활성화된 계정이 프로세스를 실행하지 못하도록 방지

top매일 나는 다음과 같은 것을 사용하여 Debian(Stretch) 서버의 프로세스를 ps -aux살펴 봅니다.

$ sudo passwd --status myuser
myuser L 12/12/2016 ...

그러나 사용자가 실행 중인 활동(설치되지 않은 상태)으로 돌아오면 ps대략 2분마다 몇 초 동안 지속되며 하나의 CPU에서 많은 리소스(50-90%)를 소비할 수 있습니다.topnode

표시되는 내용은 다음과 같습니다 $ top -U myuser.

PID  USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 
                                                                                                                                      
2172 myuser+   20   0  382868 144940  34668 R  64.5  2.4   0:01.94 node

그리고$ ps -e -H -O pid,ppid,stime,etime,user,args> file

PID   PID   PPID STIME  ELAPSED USER      COMMAND      S TTY  TIME     COMMAND
2172  2172  2155 11:22    00:05 myuser+   node server  S ?    00:00:02 node server

잠긴 사용자가 차단하려는 의도로 어떻게 이 프로세스를 시작했는지 자세히 조사하려면 어떻게 해야 합니까?

편집하다:@Paul_Pedant가 제안한 대로 사용자의 crontab을 확인했는데 예약된 작업이 없었습니다.

또한 사용자의 메일을 확인했는데 루트에서 매일 이메일이 전달되었습니다(그들은 머신을 먼저 설치했기 때문에 이전에 루트 액세스 권한이 있었습니다). 이메일 제목은 댓글에 제안된 대로 크론 작업 보고서입니다. 그러나 사용자에게 올바른 크론 작업이 없습니다. 현재 daily.cron을 조사하고 있지만 거기에서 사용자와 관련된 내용을 찾을 수 없을 것 같습니다.

답변1

가장 가능성이 높은 시나리오는 사용자에게 주기적으로 실행되는 cronjob이 있다는 것입니다.

다음은 예상치 못한 몇 가지 시나리오입니다.

동일한 UID에 매핑된 /etc/passwd에 여러 사용자 이름이 있을 수 있습니다. LDAP 또는 Active Directory 인증을 사용 중일 수 있으며 /etc/nsswitch.conf는 동일한 UID를 가진 여러 소스에서 비밀번호 항목을 가져옵니다. 주어진 UID에 대해 찾은 첫 번째 사용자 이름을 표시합니다 ps.top

UID를 사용하여 새 프로세스를 생성하는 루트로 실행되는 프로그램이 있을 수 있습니다. 예를 들어, fastcgi를 통해 노드에 연결하고 다른 UID를 사용하여 노드를 자동으로 시작하도록 Apache 웹 서버를 구성할 수 있습니다. https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html

node실행 파일을 사용자의 홈 디렉터리에 복사할 수 있으므로 루트로 설치해도 상관없습니다 .

답변2

도커가 이유다.

자세한 내용은 여기:https://forums.docker.com/t/confusion-about-the-user-a-process-run-as/48702/2

호스트의 UID 1000이 잠겨 있습니다.

그러나 Docker는 컨테이너 내부에서 UID 1000으로 프로세스를 시작하고 호스트에서 프로세스를 볼 때 이러한 프로세스는 잠긴 사용자 시작 프로세스로 나타납니다.

분명히 컨테이너 내부의 UID 1000은 호스트의 UID 1000과 다릅니다. 아마도 1000은 adduser실행 시 기본적으로 사용 가능한 첫 번째 ID 이므로 사용됩니다 .

관련 정보