Se você só precisar listar os sudoers listados no grupo sudo , acho que a melhor maneira de fazer isso seria executar este comando (que deve ser computacionalmente mais leve que qualquer um dos os outros comandos nesta resposta):
grep -Po '^sudo.+:\K.*$' /etc/group
Além disso, conforme sugerido nos comentários de muru, o formato das entradas em /etc/group pode ser facilmente manipulado por cut :
grep '^sudo:.*$' /etc/group | cut -d: -f4
Além disso, como sugerido nos comentários de muru, pode-se usar getent no lugar de grep :
getent group sudo | cut -d: -f4
Qualquer um desses comandos imprimirá todos os usuários listados no grupo sudo em /etc/group (se houver).
Divisão do comando 1:
-
grep: imprime todas as linhas correspondentes a uma expressão regular em um arquivo -
-P: faz com quegrepcorresponda às expressões regulares em estilo Perl -
o: tornagrepimprimir apenas a string correspondente -
'^sudo.+:\K.*$': tornagrepigual ao regex entre as aspas
Divisão do Regex # 1:
- Qualquer caractere ou grupo de caracteres não listados corresponde ao caractere ou ao grupo de caracteres em si
-
^: início da linha -
.+: um ou mais caracteres -
\K: descarta a correspondência anterior -
.*: zero ou mais caracteres -
$: fim da linha
Divisão do Comando nº 2:
-
grep: imprime todas as linhas correspondentes a uma expressão regular em um arquivo -
'^sudo.+:\K.*$': tornagrepigual ao regex entre as aspas -
cut: imprime somente uma seção específica de cada linha em um arquivo -
-d:: tornacutinterpretar:como um delimitador de campo -
-f4: fazcutimprimir apenas o quarto campo
Divisão do Regex # 2:
- Qualquer caractere ou grupo de caracteres não listados corresponde ao caractere ou ao grupo de caracteres em si
-
^: início da linha -
.*: zero ou mais caracteres -
$: fim da linha