「username」を使用せずにパスワードファイルエントリを見つける方法

「username」を使用せずにパスワードファイルエントリを見つける方法

現在ログインしているユーザーのパスワードファイルエントリを見つけるためにwhoコマンドを統合できますか?

答え1

はい、次のスクリプトを作成できます。

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

十分な権限がある場合は、シャドウファイルでパスワードを見つけることができます。

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

@John WH Smithが述べたように、grepは必要ありません。

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

ありがとう、ジョン

答え2

たぶん、次のようなものがあります。

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

awk '{print $1}'-f -標準入力からgrepパターンを取得するように指示するオプションとともに、grepに渡されたユーザー名を出力します。これにより、/etc/passwdログインしたユーザーのエントリが印刷されます。

エイリアス@ホスト:〜$WHO
エイリアス tty7 2015-03-10 13:02
roottty1 2015-03-10 18:19
エイリアスpts/0 2015-03-10 14:39 (:0)
エイリアス@ホスト:〜$誰| awk '{print $1}' grep -f - /etc/passwd
ルート:x:0:0:ルート:/ルート:/bin/bash
aliaa:x:1000:1001:Alaa アリ,,,::/home/aliaa:/bin/bash

関連情報