Ежедневно я просматриваю процессы на моем сервере Debian (Stretch), используя что-то вроде top или ps -aux, и вижу неактивную учетную запись.

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

Тем не менее, ps и top возвращают активность пользователя, запуская node (который даже не установлен), он длится пару секунд каждые 2 минуты примерно и может потреблять много ресурсов. (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, но не думаю, что найду там что-то, связанное с пользователем.

2
marsisalie 13 Июл 2021 в 18:32
1
Проверьте их crontab. Crond не регистрирует пользователей, поэтому вполне возможно, что он не проверяет статус пользователя. Вы также можете проверить их почтовый ящик на наличие тысяч сообщений crond.
 – 
Paul_Pedant
12 Июл 2021 в 23:27
Я рассмотрю ваши предложения и обновлю свой вопрос
 – 
marsisalie
12 Июл 2021 в 23:40
Это всего лишь предположение, но «каждые 2 минуты», возможно, является раздачей. Это также может быть сценарий, который перезапускается с помощью at. Если учетная запись была заблокирована в 2016 году, то это должно быть что-то, что выдерживает перезагрузку.
 – 
Paul_Pedant
12 Июл 2021 в 23:44
1
Используйте ps -ef | grep $pid, чтобы получить подсказку, или еще больше ps -e -H -O pid,ppid,stime,etime,user,args> file, когда появляется «пользователь-призрак», чтобы вы могли проверить на досуге.
 – 
Archemar
13 Июл 2021 в 17:52

2 ответа

Лучший ответ

Докер был причиной.

Подробности здесь: https:/ /forums.docker.com/t/confusion-about-the-user-a-process-run-as/48702/2

UID 1000 на хосте заблокирован.

Тем не менее, Docker запускает процессы под UID 1000 внутри контейнеров, которые отображаются как процесс, запущенный заблокированным пользователем при просмотре процессов на хосте.

Очевидно, что UID 1000 внутри контейнера не совпадает с идентификатором на хосте. И 1000, вероятно, используется, так как это первый доступный идентификатор по умолчанию, когда выполняется adduser.

0
marsisalie 25 Авг 2021 в 16:56

Наиболее вероятная ситуация заключается в том, что у пользователя периодически запускается cronjob.

Вот несколько менее вероятных сценариев.

Возможно, что несколько имен пользователей сопоставлены с одним и тем же UID в /etc/passwd. Возможно, вы используете аутентификацию LDAP или Active Directory, а файл /etc/nsswitch.conf получает записи passwd из нескольких источников с одним и тем же UID. ps и top будут отображать первое имя пользователя, найденное для данного UID.

Может быть программа, работающая как root, которая порождает новые процессы с UID. Например, веб-сервер apache может быть настроен для подключения к узлу через fastcgi и автоматического запуска узла с другим UID. https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html

Не имеет значения, установлен ли node пользователем root, так как исполняемый файл может быть скопирован в домашний каталог пользователя.

1
egrubbs 12 Июл 2021 в 23:46
Хорошие предложения. Я проверил UID: каждый уникален в passwd. Нет аутентификации LDAP/AD. Будет исследовать, могут ли быть созданы другие программы, и предоставить обновление.
 – 
marsisalie
13 Июл 2021 в 17:45