9 Answers
If you just need to list the sudoers listed in the sudo group, I think that the best way to do it would be to run this command (which should be computationally lighter than any of the other commands in this answer):
grep -Po '^sudo.+:\K.*$' /etc/group
Also as suggested in the comments by muru, the format of the entries in /etc/group can be easily handled by cut:
grep '^sudo:.*$' /etc/group | cut -d: -f4
Also again as suggested in the comments by muru, one can use getent in place of grep:
getent group sudo | cut -d: -f4
Any of these commands will print all the users listed in the sudo group in /etc/group (if any).
Command #1 breakdown:
grep: Prints all the lines matching a regex in a file-P: makesgrepmatch Perl-style regexeso: makesgrepprint only the matched string'^sudo.+:\K.*$': makesgrepmatch the regex between the quotes
Regex #1 breakdown:
- Any character or group of characters not listed matches the character or the group of characters itself
^: start of line.+: one or more characters\K: discard the previous match.*: zero or more characters$: end of line
Command #2 breakdown:
grep: Prints all the lines matching a regex in a file'^sudo.+:\K.*$': makesgrepmatch the regex between the quotescut: Prints only a specified section of each line in a file-d:: makescutinterpret:as a field delimiter-f4: makescutprint only the fourth field
Regex #2 breakdown:
- Any character or group of characters not listed matches the character or the group of characters itself
^: start of line.*: zero or more characters$: end of line
As it stated here I consider the simpliest way to discover with -l & -U options together, just type users it will list e.g.: John then:
If the user has sudo access, it will print the level of sudo access for that particular user:
sudo -l -U John
User John may run the following commands on this host:
(ALL : ALL) ALL
If the user don't have sudo access, it will print that a user is not allowed to run sudo on localhost:
sudo -l -U John
User John is not allowed to run sudo on localhost.
getent group sudo | cut -d: -f4, or use awk, but either way remember that group and passwd have fixed formats, with delimiters.getent group- you don't need the grep at all.getent group foois likegrep foo /etc/group, but more capable.getentat all, any tought on howgrepandgetentcompare computationally? Would it be lighter to rungetent?sudogroup. Some unixes have other groups such aswheel. The answer by @muru will include all sudoers no matter what groups they are in.