Você poderia usar getent
getent group white_house
ou se você quiser verificar um grupo de usuários específico, você pode usar groups
groups karter
adicionamos o seguinte usuário ao grupo white_house
kuku, trump, karter
usermod -a -G white_house kuku
usermod -a -G white_house trump
usermod -a -G white_house karter
como todos sabemos, podemos verificar se os usuários foram adicionados ao grupo por
grep white_house /etc/group
mas é possível verificá-lo por alguma linha de comando ou de maneira mais elegante?
Você pode executar id -Gn user_name
:
Se você precisar verificar se a declaração é True, a seguinte construção (mais complexa) deve ser útil id -Gn user_name | grep group_name && echo "We are good" || echo "user_name is not the member of group_name
.
A seguinte função do shell aceita dois parâmetros:
Ele solicita as informações sobre esse grupo com getent group
e, em seguida, passa esse resultado para awk. Awk pega a lista de usuários (campo 4, dividido por dois-pontos) e divide-a em uma matriz "usuários", dividida por vírgulas. Em seguida, ele imprime cada elemento (nome de usuário) dessa matriz em linhas separadas, que grep
, em seguida, inspeciona o nome de usuário fornecido. Se o usuário for encontrado, grep (e, portanto, toda a função) retornará 0 / success; caso contrário, retorna 1 / falha. As bandeiras do grep significam:
-F
- trata o texto da pesquisa como uma string fixa, não uma expressão regular -x
- exige que a linha inteira corresponda ao texto da pesquisa (evita correspondências falso-positivas, como "joão" e "johnson" -q
- não imprime nada na tela, mas define o código de retorno apropriadamente function useringroup {
getent group "$2" |
awk -F: '{split($4, users, ","); for (name in users) print users[name]}' |
grep -Fxq "$1"
}
Use como:
useringroup myuser mygroup && echo myuser is in mygroup || echo myuser is not in mygroup
Tags command-line users linux group