Если вам просто нужно перечислить 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:
- Любой символ или группа символов, не перечисленных в списке, соответствует самому символу или группе символов
-
^
: начало строки -
.*
: ноль или более символов -
$
: конец строки