기본 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