Если все используют 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
как дополнительная информация не нужна для работы базового скрипта.