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 ~]#
しかし、Ubuntuには存在しません。似たようなものがありますか?
答え1
Ubuntuには存在しますが、別の名前で存在します。
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
。