Como eu iria grep para uma entrada de arquivo de senha sem usar 'username'

1

Um comando who pode ser integrado para encontrar a entrada atual do arquivo de senha de usuários logados?

    
por gillette64 10.03.2015 / 23:35

2 respostas

2

Sim, você pode criar um script como este:

for who_user in $(who|cut -f1 -d' '|uniq)
do
    getent passwd|grep ${who_user}
done

Se você tiver permissão suficiente, poderá procurar a senha em seu arquivo de sombra assim:

for who_user in $(who|cut -f1 -d' '|uniq)
do
    cat /etc/passwd|grep ${who_user}
    cat /etc/shadow|grep ${who_user}
done

Como mencionado por @John WH Smith, não há necessidade de grep:

for who_user in $(who|cut -f1 -d' '|uniq)
do
    getent passwd ${who_user}
done

Obrigado John

    
por 10.03.2015 / 23:46
0

Talvez algo assim:

who | awk '{print $1}' | grep -f - /etc/passwd

awk '{print $1}' produzirá os nomes dos usuários, que são passados para o grep usando a opção -f - dizendo para pegar o padrão grep do stdin. Isso imprimirá a entrada /etc/passwd dos usuários conectados:

aliaa@host:~$ who
aliaa    tty7         2015-03-10 13:02
root     tty1         2015-03-10 18:19
aliaa    pts/0        2015-03-10 14:39 (:0)
aliaa@host:~$ who | awk '{print $1}' | grep -f - /etc/passwd
root:x:0:0:root:/root:/bin/bash
aliaa:x:1000:1001:Alaa Ali,,,:/home/aliaa:/bin/bash
    
por 11.03.2015 / 00:22

Tags