如何使用一个命令显示所有注册用户及其组?

如何使用一个命令显示所有注册用户及其组?

我正在编写一个关于基本 Unix 命令等的测试,有一个问题用一个命令显示所有注册用户及其组。同时我无法使用getent命令。

答案1

一个可能的解决方案是例如使用awkand 读取/etc/shadowand /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 的存在/etc/shadow意味着用户无法使用 unix 密码登录(但用户可以通过其他方式登录系统,例如基于密钥的登录) 。

答案2

cat /etc/passwd (根据您的要求使用 grep 过滤内容)

干得好:awk -F':' '{ print $1}' /etc/passwd | while read -r line; do id "$line"; done

相关内容