lid
RHEL에는 기본 또는 보조 그룹 사용자를 나열하는 명령이 있습니다 .
[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
.lid
id-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
.