Дело в том, что пользователь Apache был изменен для работы с правами root. Эта установка опасна и позволяет легко перерасти тривиальные взломы в root.
Я бы поговорил с предыдущими сисадминами, чтобы хоть как-то успокоиться, это не бэкдор, оставшийся от предыдущей атаки, а просто ошибка.
Я бы также просмотрел старые резервные копии, чтобы узнать, как долго у пользователя Apache был этот идентификатор.
Ошибка это или нет, но вероятность того, что машина уже взломана, довольно высока. (несколько раз?)
Также довольно часто мошеннический системный администратор или злоумышленник оставляет пользователя с идентификатором 0. Идентификатор 0 дает любому пользователю привилегии root.
Я бы не стал ждать никакого переселения; на данном этапе игры вопрос не в смене идентификатора пользователя.
Я бы немедленно изменил идентификатор, пароль пользователя apache _(, если таковой имеется ), и оболочку bash этого пользователя на /bin/nologin. Однако у возможного хакера уже могут быть альтернативные записи.
Сделайте образ/резервную копию этого и как можно скорее переустановите этот сервер.
Если вы можете восстановить файлы данных из надежной резервной копии, тем лучше. На данный момент переустановка может избавить от компрометации root, но возможно, что мошеннические веб-оболочки останутся позади. В качестве подсказки для начинающих ищите также подозрительные файлы root setuid не на своем месте.
Рассмотрите возможность найма опытного консультанта для оценки всех ваших систем. Этот сервер может быть точкой входа в вашу внутреннюю структуру -.
Существует также удаленный вариант, возможно, это было сделано как небрежный способ не управлять разрешениями пользователей.Будьте готовы к тому, что ваши сайты или какая-то непонятная функциональность загадочным образом выйдет из строя после удаления привилегий root у пользователя apache.
Сgrep
:
grep -e "^%" -e "^[2-9][1-9]" file | column -t
column -t
чтобы было красиво:
%CPU PID USER UID COMMAND %MEM
71 9136 ashti 1000 firefox 4.6
36 1432 ashti 1000 gnome-shell 8.6
25 9100 ashti 1000 gedit 1.1
С сохранением заголовка, awk
выражение:
$ awk 'NR==1 || (NR > 1 && $1 > 20)' file
%CPU PID USER UID COMMAND %MEM
71 9136 ashti 1000 firefox 4.6
36 1432 ashti 1000 gnome-shell 8.6
25 9100 ashti 1000 gedit 1.1
Цикл for
не подходит для этой задачи -для обсуждения причин см., например,
Мой личный выбор — Миллер:
$ mlr --pprint filter -x '${%CPU} < 20' file > newfile
$ cat newfile
%CPU PID USER UID COMMAND %MEM
71 9136 ashti 1000 firefox 4.6
36 1432 ashti 1000 gnome-shell 8.6
25 9100 ashti 1000 gedit 1.1