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 quegrep
corresponda às expressões regulares em estilo Perl -
o
: tornagrep
imprimir apenas a string correspondente -
'^sudo.+:\K.*$'
: tornagrep
igual 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.*$'
: tornagrep
igual ao regex entre as aspas -
cut
: imprime somente uma seção específica de cada linha em um arquivo -
-d:
: tornacut
interpretar:
como um delimitador de campo -
-f4
: fazcut
imprimir 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