Обратите внимание, что дальнейшие действия могут поставить под угрозу безопасность вашей системы различными способами.
Создайте сценарий, который позаботится о том, чтобы убить этот ваш процесс (назовем его процессом P). Затем дайте всем пользователям разрешение на запуск этого сценария в sudoers. Наконец, добавьте подходящий вызов для этого скрипта с sudo в /etc/bashrc
.
Давайте для примера предположим, что вы знаете, что ваш процесс запущен из /usr/local/sbin/myproc
и что вы хотите уничтожить все эти процессы сразу, когда кто-то войдет в систему, так что вы будете использовать простую стратегию grep и kill для убивая их.
Итак, сначала поместите следующее в /usr/local/sbin/killmyprocs
:
#!/bin/sh
ps auxw|grep [m]yproc|awk '{ print $2 }'|xargs kill -TERM > /dev/null 2>&1
# end of file.
Вы, вероятно, захотите сделать что-то более сложное, если вы действительно продолжите и реализуете это. Поэтому обязательно создайте сценарий, который перехватывает соответствующие сигналы и в целом делает все безопасным образом.
Во-вторых, дайте всем пользователям разрешение на запуск этого скрипта в /etc/sudoers
, добавив в него:
ALL ALL = (root) NOPASSWD: /usr/local/sbin/killmyprocs
Третий и последний шаг - добавить вызов sudo в ваш скрипт в /etc/bashrc
:
[ "`id -n -u`" != "<my_username>" ] && sudo /usr/local/sbin/killmyprocs
Замените на свою учетную запись, чтобы избежать уничтожения "секретных" процессов при входе в систему.
Подводя итог: 1) создайте сценарий, который не производит вывод, но убивает процессы, которые вы хотите убить, 2) добавьте соответствующую запись в /etc/sudoers
для каждого пользователя в вашей системе, чтобы иметь возможность выполнять этот сценарий от имени пользователя root, 3) добавьте вызов к вашему скрипту через sudo в /etc/bashrc
(или /etc/profile
).
Предупреждение: /etc/bashrc
(или /etc/profile
в этом отношении) получают только для интерактивных оболочек. Это означает, что пользователю довольно легко выполнить ssh yourhost 'ps auxw' и найти ваш процесс из таблицы процессов, он не будет уничтожен механизмом, представленным выше, потому что с файлами инициализации оболочки не обращаются. Есть способ обойти это, используя ForceCommand
в «sshd_config», но это оставлено в качестве упражнения для читателя.
В заключение я хотел бы еще раз напомнить, что это имеет очевидные последствия для безопасности. Это также звучит очень похоже на попытку замаскировать систему, к которой у вас нет полного доступа, но это не совсем моя проблема (если вам придется спрашивать об этом в Super User, вас все равно поймают достаточно скоро),