Если все используют sudo, вы можете использовать что-то вроде ps -ax | grep sudo чтобы увидеть, кто в данный момент использует sudo или env1-controller и, запустив who вы можете получить представление о том, кто на самом деле его запускает.
В качестве примера на моей машине с моей машины вывод ps -ax | grep sudo хотел бы это:
24324 pts/0 S 0:00 sudo su <user>
Первая запись - это PID, вторая - TTY, третий раз и последняя команда. Если вы используете, who вы получите список в настоящее время вошли в систему пользователей и какой TTY они используют. Это может выглядеть так:
<user> pts/0 Nov 23 10:24 (<IP>)
<user> pts/2 Nov 23 10:25 (<IP>)
Таким образом, благодаря этой комбинации вы знаете, что sudo подключается к любому пользователю, использующему pts/0 . Это будет ручной способ проверки.
Я полагаю, что эту информацию можно объединить, но мои навыки bash недостаточно хороши, чтобы просто опубликовать ответ о том, как это сделать.
Окончательное решение, использованное первоначальным автором вопроса, было:
Я фактически использовал grep для извлечения точных чисел TTY, ps -aux | grep -v grep | grep "sudo su - whoami" | grep -E -o 'pts/[0-9]+' | grep -E -o '[0-9]+' , а затем с помощью ls -l /dev/pts/${id} определить, кому принадлежит TTY.
Что это делает:
- Используйте
ps -aux чтобы получить список всех запущенных процессов, включая некоторую дополнительную информацию.
grep все строки, которые не содержат grep , чтобы исключить grep из вывода.
grep строка для всех процессов, которые содержат sudo .
grep текст pts/<number> из этих строк.
grep просто номер.
- Используйте
ls чтобы проверить, кто является владельцем этого TTY.
Используя эту информацию, вы можете попытаться сделать это (если хотите использовать who):
who | grep $(ps -ax | grep -v grep | grep "sudo su - whoami" | grep -E -o 'pts/[0-9]+')
Но это будет работать только до тех пор, пока есть один результат, потому что вывод из $() будет иметь несколько строк. Как вы можете видеть, я пропускаю u из ps как дополнительная информация не нужна для работы базового скрипта.