Ubuntu에 "lid"와 유사한 명령이 있습니까?

Ubuntu에 "lid"와 유사한 명령이 있습니까?

lidRHEL에는 기본 또는 보조 그룹 사용자를 나열하는 명령이 있습니다 .

[root@192 ~]# id user1
uid=1000(user1) gid=1000(user1) groups=1000(user1),1001(g1)
[root@192 ~]# id user2
uid=1001(user2) gid=1002(user2) groups=1002(user2),1001(g1)
[root@192 ~]# id user3
uid=1002(user3) gid=1001(g1) groups=1001(g1)
[root@192 ~]# lid -g g1
 user3(uid=1002)
 user1(uid=1000)
 user2(uid=1001)
[root@192 ~]#

하지만 우분투에는 존재하지 않습니다. 비슷한 것이 있나요?

답변1

우분투에는 존재하지만 다른 이름으로 존재합니다.

sudo libuser-lid -g g1

패키지의 일부이므로 libuser필요한 경우 설치하세요.

sudo apt install libuser

이름이 없는 이유 는 다음과 같습니다 lid.lidid-utils패키지에는 다양한 목적이 있습니다.

답변2

설명된 기능을 달성하기 위해 표준 유틸리티를 사용할 수 있습니다.

for u in $(getent group | grep '^g1:' | cut -d: -f4 | tr , '\n'); do
    printf "%s(uid=%d)\n" $u $(id -u "$u")
done

고쳐 쓰다:주문하다:

getent passwd | grep -E '^([^:]+:){3}'$(getent group | grep '^g1:' | cut -d: -f3)':' | cut -d: -f1

기본 그룹이 있는 사용자에 해당하는 행은 /etc/passwd 에서 검색됩니다 g1. 이는 이전 명령과 함께 사용할 수 있습니다.

for u in $({ getent passwd | grep -E '^([^:]+:){3}'$(getent group | \
        grep '^g1:' | cut -d: -f3)':' | cut -d: -f1; \
    getent group | grep '^g1:' | cut -d: -f4 | tr , '\n'; }); do
    printf "%s(uid=%d)\n" $u $(id -u "$u")
done | sort | uniq

마지막으로 중복 항목 정렬 및 제거를 추가합니다.

편의상 그룹 이름을 매개변수로 사용하여 이 명령을 쉘 함수로 만들 수 있습니다.

lid_replacement()
{
    for u in $({ getent passwd | grep -E '^([^:]+:){3}'$(getent group | \
            grep '^'$1':' | cut -d: -f3)':' | cut -d: -f1; \
        getent group | grep '^'$1':' | cut -d: -f4 | tr , '\n'; }); do
        printf "%s(uid=%d)\n" $u $(id -u "$u")
    done | sort | uniq
}

# call as: `lid_replacement g1`

편집하다:정확한 그룹 이름과 일치하도록 정규식이 업데이트되었습니다.

편집 2:getent(1)를 사용하도록 업데이트되었으며 기능이 추가되었습니다 lid_replacement.

관련 정보