![하나의 명령을 사용하여 등록된 모든 사용자와 해당 그룹을 표시하는 방법은 무엇입니까?](https://linux55.com/image/63664/%ED%95%98%EB%82%98%EC%9D%98%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%93%B1%EB%A1%9D%EB%90%9C%20%EB%AA%A8%EB%93%A0%20%EC%82%AC%EC%9A%A9%EC%9E%90%EC%99%80%20%ED%95%B4%EB%8B%B9%20%EA%B7%B8%EB%A3%B9%EC%9D%84%20%ED%91%9C%EC%8B%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
기본 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