Как я могу перечислить всех суперпользователей?

Если вам просто нужно перечислить sudoers, перечисленные в sudo группы, я думаю, что лучшим способом сделать это было бы запустить эту команду (которая должен быть вычислительно легче, чем любая из других команд в этом ответе):

grep -Po '^sudo.+:\K.*$' /etc/group

Также, как было предложено в комментариях муру, формат записей в /etc/group может быть легко обработан с помощью cut:

grep '^sudo:.*$' /etc/group | cut -d: -f4

Кроме того, опять же, как было предложено в комментариях муру, можно использовать getent на месте grep:

getent group sudo | cut -d: -f4

Любая из этих команд выведет на печать всех пользователей, перечисленных в sudo группа в /etc/group (если таковые имеются).

Разбивка команды №1:

  • grep: Выводит все строки, соответствующие регулярному выражению в файле
  • -P: делает grep сопоставьте регулярные выражения в стиле Perl
  • o: делает grep выводите только соответствующую строку
  • '^sudo.+:\K.*$': делает grep сопоставьте регулярное выражение между кавычками

Разбивка регулярного выражения #1:

  • Любой символ или группа символов, не перечисленных в списке, соответствует самому символу или группе символов
  • ^: начало строки
  • .+: один или несколько символов
  • \K: отбросить предыдущее совпадение
  • .*: ноль или более символов
  • $: конец строки

Разбивка команды №2:

  • grep: Выводит все строки, соответствующие регулярному выражению в файле
  • '^sudo.+:\K.*$': делает grep сопоставьте регулярное выражение между кавычками
  • cut: Печатает только указанный раздел каждой строки в файле
  • -d:: делает cut интерпретировать : в качестве разделителя полей
  • -f4: делает cut выведите только четвертое поле

Разбивка регулярного выражения #2:

  • Любой символ или группа символов, не перечисленных в списке, соответствует самому символу или группе символов
  • ^: начало строки
  • .*: ноль или более символов
  • $: конец строки