
基本的なUnixコマンドなどのテストを作成していますが、登録されているすべてのユーザーとそのグループを1つのコマンドで表示する質問があります。同時にgetent
コマンドは使用できません。
答え1
考えられる解決策は、たとえば次のようにawk
読み取ることです/etc/shadow
。/etc/group
(システムユーザーが必要ないと仮定し、そのユーザーを除いてユーザーをロックしようとしました。)
awk -F":" 'NR==FNR {
if ($2 !~ /\!/ && $2 !~ /\*/) {
m[$1] = "";
}
next;
}
{
for (i in m) {
if ($4 ~ i || $1 == i) {
m[i] = m[i] $1 " ";
}
}
}
END {
for (i in m) {
print i ":", m[i];
}
}' /etc/shadow /etc/group
if ($2 !~ /\!/ && $2 !~ /\*/)
すべてのユーザーアカウントを一覧表示する条件を削除するか、inがあることは、ユーザーがunixパスワードを使用してログインできないことを意味します(ただし、!
ユーザーはキーベースのログインなどの他の方法でシステムにログインできます) )。 。*
/etc/shadow
答え2
cat /etc/passwd (要求に応じてコンテンツをフィルタリングするにはgrepを使用してください)
ここにあります:awk -F':' '{ print $1}' /etc/passwd | while read -r line; do id "$line"; done