como listar usuários em um grupo e suas senhas

1

Como posso ver uma lista de usuários em um grupo específico e suas senhas ou atributos?

Eu sei usar

cut -d: -f1 /etc/passwd

Mas isso só lista os usuários.

    
por ayy lmao 04.03.2015 / 11:18

2 respostas

0

#!/bin/bash

cut -d : -f 1 /etc/passwd | while read user
do
    # check if user is in specific group
    'groups $user' | grep -q <SPECIFICGROUP>
    if [ $? -ne 0 ] ; then
        continue;
    fi

    printf "User=${user},password='awk -F: -v user=$user '$1 == user { print $2 ;} ''"
done

edit: não processa o caso se um nome de usuário for o prefixo de outro nome de usuário

    
por 04.03.2015 / 11:42
0

Se você quiser listar usuários cujo grupo principal é somegroup :

gid=$(getent group somegroup | awk -F : '{print $3}')
getent passwd | awk -F : -v gid="$gid" '$4 == gid'

Esta resposta pressupõe um Linux não embarcado, pois depende do Glibc getent .

Você pode configurar os campos que deseja na saída, ajustando o segundo comando awk. Por exemplo, para imprimir apenas o nome real e o número de telefone:

getent passwd | awk -F : -v gid="$gid" '$4 == gid {print $5}'

Se você deseja listar usuários que têm somegroup como um grupo suplementar, primeiro é necessário recuperar os IDs de usuário do banco de dados do grupo.

usernames=$(getent group somegroup | awk -F : '{print $3 "," $4}')
gid=${usernames%%,*}; usernames=${usernames#*,}
getent passwd | awk -F : -v gid="$gid" -v usernames="$usernames" '
    BEGIN {split(usernames, names, /,/); for (name in names) user[name]=1}
    name[$1] || $4==gid
'

Você não pode imprimir senhas de usuários porque elas não são armazenadas. Você pode imprimir seu hash de senha se tiver permissão para acessá-lo. Se o seu banco de dados de senha for local, os hashes de senha estarão no arquivo /etc/shadow . Se você obtiver uma lista de nomes de usuários e outros campos, poderá juntar-se a ele com o arquivo shadow:

… | awk … | join -t : -j 1 - /etc/shadow
    
por 05.03.2015 / 01:37