1

Есть ли способ, которым я могу получить, какой пользователь sudo работает в каком каталоге, в каком файле.

Есть ли файл, который показывает детали текущего рабочего каталога всех пользователей sudo.

1 ответ1

4

Вы можете использовать pgrep sudo для получения всех процессов sudo, затем ps h --ppid $THEPID -o pid для получения дочерних процессов и, наконец, pwdx $SUBPID для получения рабочего каталога этих подпроцессов.

Наконец, вы можете суммировать это в два цикла for, которые могут выглядеть так:

for sudo in `pgrep sudo`; do
 sudo pwdx $sudo;
 for subsudo in `ps h --ppid $sudo -o pid`; do
   sudo pwdx $subsudo
 done
done

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

#!/bin/bash

function getchildren()
{
  echo $1
  children=`ps h --ppid $1 -o pid`
  if [[ -n $children ]]; then
   for child in $children; do
     getchildren $child
   done
  fi
}


for sudo in `pgrep sudo`; do
 for subsudo in `getchildren $sudo`; do
   sudo pwdx $subsudo
 done
done | sort | uniq

Вывод сортируется и удаляются двойные строки в случае, если кто-то запускает процесс sudo из сеанса sudo su .

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