하나의 명령을 사용하여 등록된 모든 사용자와 해당 그룹을 표시하는 방법은 무엇입니까?

하나의 명령을 사용하여 등록된 모든 사용자와 해당 그룹을 표시하는 방법은 무엇입니까?

기본 Unix 명령 등에 대한 테스트를 작성 중인데, 등록된 모든 사용자와 해당 그룹을 하나의 명령으로 표시하는 질문이 있습니다. 동시에 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이 있다는 것은 /etc/shadow사용자가 unix 비밀번호를 사용하여 로그인할 수 없다는 것을 의미합니다(그러나 사용자는 키 기반 로그인과 같은 다른 방법을 통해 시스템에 로그인할 수 있음). .

답변2

cat /etc/passwd (요구사항에 따라 콘텐츠를 필터링하려면 grep을 사용하세요)

여기 있어요:awk -F':' '{ print $1}' /etc/passwd | while read -r line; do id "$line"; done

관련 정보