Якщо кожен використовує 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 Ви отримуєте список користувачів, які в даний час увійшли в систему, і які вони використовують. Це може виглядати так:
<user> pts/0 Nov 23 10:24 (<IP>)
<user> pts/2 Nov 23 10:25 (<IP>)
Так через цю комбінацію ви знаєте, що sudo підключається до будь-якого користувача pts/0. Це було б ручним способом перевірки.
Я думаю, що можна об'єднати цю інформацію, але мої навички Баш не достатньо для того, щоб просто розмістити відповідь про те, як це зробити.
Остаточне рішення, яке використовував оригінальний автор питання:
Насправді, я використав 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 | grep $(ps -ax | grep -v grep | grep "sudo su - whoami" | grep -E -o 'pts/[0-9]+')
Але це буде працювати тільки до тих пір, поки є єдиний результат, тому що вихід з $() буде мати кілька рядків. Як ви бачите, я пропускаю u від ps як додана інформація не потрібна для роботи базового сценарію.
sudoВи можете розглянути можливість використання чогось по лініяхps -ax | grep sudo, щоб дізнатися, хто зараз використовуєsudoабоenv1-controllerі шляхом запускуwhoВи можете отримати уявлення про те, хто насправді працює.