防止禁用的帐户运行进程

防止禁用的帐户运行进程

top每天我都会使用类似或 之类的东西查看 Debian (Stretch) 服务器上的进程,ps -aux并且看到一个处于非活动状态的帐户

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

然而,pstop用户返回一个正在运行的活动node(甚至没有安装)时,它大约每 2 分钟持续几秒钟,并且可能会在一个 CPU 上占用大量资源 (50-90%)。

这是显示的内容$ 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,没有安排任何任务。

我还检查了该用户的邮件,他们每天都有从 root 转发的电子邮件(他们首先安装了机器,因此他们之前具有 root 访问权限)。电子邮件主题是 cron 作业报告,如评论中所建议。但用户没有正确的 cron 作业。目前正在调查 daily.cron,但我认为我不会在那里找到与用户相关的内容。

答案1

最可能的情况是用户有一个定期运行的 cronjob。

以下是一些不太可能发生的情况。

/etc/passwd 中可能有多个用户名映射到同一个 UID。您可能正在使用 LDAP 或 Active Directory 身份验证,并且 /etc/nsswitch.conf 正在从具有相同 UID 的多个源获取 passwd 条目。pstop会显示它为给定 UID 找到的第一个用户名。

可能有一个以 root 身份运行的程序正在生成具有 UID 的新进程。例如,apache Web 服务器可能配置为通过 fastcgi 连接到节点,并使用不同的 UID 自动启动节点。 https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html

是否由 root 安装并不重要node,因为可以将可执行文件复制到用户的主目录。

答案2

Docker 就是原因。

详细信息在这里:https://forums.docker.com/t/confusion-about-the-user-a-process-run-as/48702/2

主机上的 UID 1000 被锁定。

然而,Docker 在容器内启动 UID 1000 的进程,在查看主机上的进程时,这些进程显示为锁定用户启动的进程。

显然,容器内的UID 1000与主机上的不一样。可能会使用 1000,因为它是adduser执行时默认的第一个可用 ID。

相关内容