1

Я знаю, что вижу список зарегистрированных пользователей с помощью w или аналогичных команд. Я хочу знать, кто из вошедших в систему пользователей в настоящее время имеет доступ с правами root, т.е. сделал su чтобы стать пользователем root. Вывод w просто показывает первое (реальное) имя пользователя, а не root, если пользователь выполнил su .

3 ответа3

3

На самом деле w отображает только логины. Если пользователь делает su для другой программы (оболочки), он не будет отображаться, потому что это не оболочка входа в систему.

Основная проблема заключается в том, что вы пытаетесь сопоставить дату, которая не была предназначена для корреляции. Вы должны получить информацию из нескольких источников, а затем сделать перекрестную ссылку на нее.

Чтобы получить список всех людей, которые использовали su , вы можете проверить /var/log/auth (в зависимости от вашего дистрибутива). Вы увидите следующее сообщение:

May  1 09:47:32 frisbee su[7000]: Successful su for root by mtak
May  1 09:47:32 frisbee su[7000]: + /dev/pts/5 mtak:root

Вы можете проверить, какие pts'ы все еще активны, проверив, активны ли псевдотерминалы с помощью ls /dev/pts (хотя вам придется делать это быстро, потому что pts'es повторно используются). Вы также можете использовать время модификации псевдотерминала и сопоставить его со временем в файле auth.log . Вы можете найти время модификации очков с помощью stat /dev/pts/ .

По общему признанию, это не идеально, но я думаю, что с некоторыми сценариями вы сможете получить список пользователей, которые подали в суд.

1

Вы можете использовать ps чтобы проверить, какой пользователь запускает su процесс.

ps aux | grep ' [s]u'
1

Это должно дать вам список имен пользователей, которые запускают 'su -' для получения прав root:

for ppid in $(for pid in $(pgrep -u root -f "^su -"); do ps lh $pid | awk '{print $4;}'; done); do ps uh $ppid | awk '{print $1;}'; done | uniq

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .