Ubuntuシステムのコンソールでユーザーを一覧表示するために使用できるユーザーフレンドリーなコマンドはありますか?
cat /etc/passwd
読みにくいユーザーリストが表示されます。エントリが列に配置され、グループIDの横にかっこ内にグループ名があるアルファベット順のリストを表示すると便利です。
/ etc/passwdファイルの素敵な出力のための良い方法:
$ column -nts: /etc/passwd
これでソートできます:
$ column -nts: /etc/passwd | sort
最後の列にグループ名がある(括弧なし):
$ paste -d: /etc/passwd <(groups $(cut -d: -f1 /etc/passwd) | sed 's/.*: //') | column -nts: | sort
マシンにrootアクセス権がある場合、次のことができます。
Sudo grep -vE '^[^*!]+:[*!]:' /etc/shadow | sort | cut -d: -f1 | while read user; do id $user; done | column -ts' ,' | vi '+set nowrap' -
Rootになって、シャドウファイルを読み取ります。ユーザーにパスワードが設定されているかどうか(人間のユーザー)を確認する場合にのみ、root権限が必要です。それ以外の場合は、cat /etc/passwd
の代わりに Sudo grep ...
:
Sudo
パスワードが設定されているユーザーのみを表示:
grep -vE '^[^*!]+:[*!]:' /etc/shadow
ユーザー名で並べ替え:
sort
ユーザー名以外のすべての情報を破棄します。
cut -d: -f1
ユーザー名を反復処理し、グループ情報を追加します。
while read user; do id $user; done
入力を列にフォーマットします。
column -ts' ,'
Viを使用して結果を表示します。
vi '+set nowrap' -
このようなことを試してください:
cut -d: -f1 /etc/passwd | sort | while read user; do id $user; done | sed 's/\(\()\|^\)[^(]*(\|)\)/ /g' | column -t
その出力は少し異なりますが、この答えの2つの部分を仕事に完全に適合するものに組み合わせるための演習として残しておきます。 (あなたはsed
だけが好きではありませんか?)
Ubuntuでは次のようになります。
$ f1、f2 ...、$ f7に格納された/ etc/passwdの7つのフィールド
while IFS=: read -r f1 f2 f3 f4 f5 f6 f7
do
echo "User $f1 use $f7 Shell and stores files in $f6 directory."
done < /etc/passwd
私がすることとそれが私の目的のために機能することは
ls /home
確かに、これは実際にはユーザーのリストではなく、ユーザーのホームディレクトリと過去のユーザーのディレクトリのリストを提供しますが、ターミナルが存在しないユーザーに対して実行したいコマンドは、通知を表示し、削除のヒントになる可能性がありますユーザーがいない、または移動しないホームファイル!
これはjoin
で簡単だと思いましたが、join
ではファイルをソートする必要があります結合フィールドで。したがって、一時ファイルを使用した回避策(?)が必要でした。出力はユーザーごとにソートされ、ユーザー、グループ、およびグループIDが表示されます。
uag () {
TEMP_GROUPS=/var/tmp/sorted_groups
TEMP_USERS=/var/tmp/sorted_users
cat /etc/group | tr ":" " " | sort -k 3 -o $TEMP_GROUPS
cat /etc/passwd | tr ":" " " | sort -k 4 -o $TEMP_USERS
join -1 4 -2 3 -o 1.1,2.1,2.3 $TEMP_USERS $TEMP_GROUPS | sort
rm $TEMP_GROUPS $TEMP_USERS
}
tr
を使用して文字を別の文字に変換します。 sort
-k
のキーフィールドに従って、-o
のファイルに出力します。最初の(-1
)および2番目の(-2
)ファイルのフィールドに関して結合し、最初のファイル(-o 1.1
)および2番目の(,2.1,2.3
)の特定のフィールドを出力します。